我是Elasticsearch的新手,我现在正试图了解completion suggester
我有一个像这样的地方列表:
通过将完成建议器的映射设置为以下内容:
'place_suggest': {
'type': 'completion',
'payloads': true,
'index_analyzer' : 'stop',
'search_analyzer' : 'stop',
'preserve_position_increments' : false
}
当建议人的文字输入只是字母L
但是,当用户键入单词The London Eye
时,我希望eye
返回,同样当用户输入The London Dungeon
时返回Dungeon
(当然,这些条款的任何前缀)
我一直在使用不同的分析仪和设置,但今天没有成功。
我需要使用哪种分析仪来实现上述目标?
答案 0 :(得分:3)
您可以使用Completion Suggester达到您想要的效果。使用多个输入字段和单个统一输出。如果其中一个输入字段匹配,则返回输出字段。
curl -X PUT localhost:9200/places/place/1 -d '
{
"title" : "The London Eye",
"place_suggest" : {
"input" : [
"The London Eye",
"Eye"
],
"output":"The London Eye"
}
}'
curl -X PUT localhost:9200/places/place/2 -d '
{
"title" : "The London Dungeon",
"place_suggest" : {
"input" : [
"The London Dungeon",
"Dungeon"
],
"output":"The London Dungeon"
}
}'