在閱讀official documentation和一些Q後A在這裏,我仍然無法讓我的Elasticsearch正確搜索沒有通配符的部分字詞。沒有通配符的ES搜索未使用分析器得到結果
我已經有〜470K條目的公司,並且想要在開始輸入公司名稱時完成某種自動完成。
指數得到這樣創建:
{
"lei-index" : {
"aliases" : { },
"mappings" : {
"record" : {
"properties" : {
"LegalName" : {
"type" : "text",
"analyzer" : "legalname_analyzer",
"search_analyzer" : "legalname_search"
}
}
}
},
"settings" : {
"index" : {
"number_of_shards" : "5",
"provided_name" : "lei-index",
"creation_date" : "1478597987141",
"analysis" : {
"filter" : {
"legalname_filter" : {
"type" : "edge_ngram",
"min_gram" : "4",
"max_gram" : "20"
}
},
"analyzer" : {
"legalname_analyzer" : {
"filter" : [
"legalname_filter",
"lowercase"
],
"type" : "custom",
"tokenizer" : "legalname_tokenizer"
},
"legalname_search" : {
"filter" : [
"legalname_filter",
"standard",
"lowercase"
],
"type" : "custom",
"tokenizer" : "legalname_tokenizer"
}
},
"tokenizer" : {
"legalname_tokenizer" : {
"token_chars" : [
"letter"
],
"min_gram" : "4",
"type" : "edge_ngram",
"max_gram" : "20"
}
}
},
"number_of_replicas" : "1",
"uuid" : "mUBvjn9BSBayrkvXSIXxQw",
"version" : {
"created" : "5000051"
}
}
}
}
}
當我知道尋找可以說赫伯羅特勞埃德,我可以搜索「赫伯羅特」,並得到3個結果「赫伯羅特」,「赫伯羅特勞埃德「和」hapag loyd「
但是我想歸檔一下,我可以搜索」hapa「並獲得結果。
http://localhost:9200/lei-index/record/_search?pretty&q=hapa
0結果
使用通配符,我得到的結果,包括赫伯羅特,但我猜通配符較大的指標
http://localhost:9200/lei-index/record/_search?pretty&q=hapa *
是低效我試圖用關鍵字作爲標記器並將過濾器留出並僅使用標記器,但沒有得到預期的結果。
測試儀:
curl -XPOST 'localhost:9200/lei-index/_analyze?pretty' -d '{ "analyzer": "legalname_analyzer", "text": "hapag"}'
{
"tokens" : [
{
"token" : "hapa",
"start_offset" : 0,
"end_offset" : 4,
"type" : "word",
"position" : 0
},
{
"token" : "hapa",
"start_offset" : 0,
"end_offset" : 5,
"type" : "word",
"position" : 1
},
{
"token" : "hapag",
"start_offset" : 0,
"end_offset" : 5,
"type" : "word",
"position" : 1
}
]
}
將是巨大的,如果任何人都可以指出哪裏我的思維出了問題在這裏,因爲這是我第一次與elasticsearch工作。
還有最後一件事,我和哈帕德·勞伊德無關,我只是在這裏用它作爲例子。
感謝
您是否嘗試過指定字段名稱,以便正確的分析儀在搜索時踢入? 'http:// localhost:9200/lei-index/record/_search?pretty&q = LegalName:hapa' – Val
Darn !!當然,我沒有......你可以發佈這個答案嗎?並感謝您的快速回復 –