2014-04-17 39 views
3

聚集我不得不指數許多文件是這樣的:如何通過子在elasticseach

POST /example/doc 
{ 
id : "type-name", 
foo: bar 
} 

,我想檢索所有所存在的類型的列表。例如

POST /example/doc 
{ 
    id : "AAA-123", 
    foo: bar 
} 
POST /example/doc 
{ 
    id : "AAA-456", 
    foo: bar 
} 
POST /example/doc 
{ 
    id : "BBB-123", 
    foo: bar 
} 

並要求elasticseaarch給我一個列表,我有AAA和BBB。 「 - 」

UPDATE 我還使用自定義分析

"settings": { 
     "analysis": { 
      "char_filter" : { 
       "remove_after_minus":{ 
        "type":"pattern_replace", 
        "pattern":"-(.*)", 
        "replacement":"" 
       } 
      }, 
      "analyzer": { 
       "id_analyzer":{ 
        "tokenizer" : "standard", 
        "char_filter" : ["remove_after_minus"] 
       } 
      } 
     } 
    } 
+0

如何在aggs查詢中使用這個標記器? –

回答

2

解決如果你把標準分析器,該ID將在被分割。所以,如果你的類型的大寫和小寫是一樣的,你可以用一個簡單的小查詢

curl -XPOST "http://localhost:9023/index/type/_search?size=0&pretty=true" -d 
'{ 
    "query" : { 
     { "regexp":{ "id": "[A-Z]+" } 
    }, 
    "facets" : { 
     "id" : { 
      "terms" : { 
       "field" : "id", 
       "size" : 50 
      } 
     } 
    } 
}' 

去應該給你somtehing,您可以使用。

+0

它的工作原理! 我應該改變,如果有數字和字母boht「類型」和「名稱」,我只想要「類型」部分 – bracchetto

+0

只是正則表達式部分:而不是[AZ] +,\ w + – VirgileD

+0

我試過像這個,但現在我得到的結果也是名稱部分。我應該實施自定義分析儀還是有更簡單的解決方案? – bracchetto