我正在使用彈性搜索來索引包含兩個字段的實體:agencyName和agencyAddress。ES檢索部分詞語 - ngram?
比方說,我有一個索引實體:
{
"agencyName": "Turismo Viajes",
"agencyAddress": "Av. Maipú 500"
}
我想是能夠搜索這個實體並得到上通過agencyName搜索的實體。不同的搜索可能是:
1)urismo 2)VIAJE 3)VIAJES 4)賽車 5)的URI
的想法是,如果我與這些字符串查詢我應該總是讓該實體(可能不同的分數取決於它的準確程度)。
爲此,我認爲nGram會解決問題,所以我在我的彈性search.yml文件中定義了一個名爲phrase的全局分析器。
index:
analysis:
analyzer:
phrase:
type: custom
tokenizer: nGram
filter: [nGram, lowercase, asciifolding]
我創建的代理指標是這樣的:
{
"possible_clients" : {
"possible_client" : {
"properties" : {
"agencyName" : {
"type" : "string",
"analyzer" : "phrase"
},
"agencyAddress" : {
"type": "string"
}
}
的問題是,使這樣的呼叫時:
curl -XPOST 'http://localhost:9200/possible_clients/possible_client/_search' -d '{
"query": { "term": { "agencyName": "uris" }}
}'
我沒有得到任何命中。任何想法我做錯了什麼?
在此先感謝。
謝謝,我會盡快測試它並讓你知道:) –