【发布时间】:2020-07-14 10:04:13
【问题描述】:
我想在 ES 中实现自动完成功能,我遵循了 ES 文档中的 this 教程
我的索引是:
{
"properties" : {
"suggest" : {
"type" : "completion"
},
"titleKeyword" : {
"type": "keyword"
}
}
}
}
我将文本值放入titleKeyword 字段中
然后我像下面这样查询
{
"suggest" : {
"my-suggestion" : {
"text" : "iphone",
"term" : {
"field" : "titleKeyword"
}
}
}
}
结果是:
...
"suggest": {
"my-suggestion": [
{
"text": "iphone",
"offset": 0,
"length": 6,
"options": []
}
]
}
预期结果是
options:[iphone x, iphone 11, iphone 11 pro, iphone 7]
注意:标题是完整的句子,例如“iPhone x 64gb black”
据我从文档中了解到,我必须在创建文档时“提前”给出建议,这在我的情况下是不可能的,有没有办法在不手动提出建议的情况下实现此功能?
谢谢
【问题讨论】:
-
所以基本上你有包含 iphone x、iphone 11、iphone 11 pro、iphone 7 的文档,当搜索
iphone时,你希望它们都出现在搜索结果中? -
@OpsterElasticsearchNinja 完全一样
-
根据您的要求提供答案:)
-
你有机会看我的回答吗
-
@OpsterElasticsearchNinja 非常感谢您的回答,但不幸的是,它并不能完全解决我的情况我可以进行正则表达式查询并获取包含查询文本的文档(因为标题可能包含更多 tahn一个词,例如 iphone x 32gb storage silver ) 所以当我写 iphone 时,我想向我推荐 iphone x、iphone 7 等等,即不是文档标题,而是文档标题中的关键字
标签: elasticsearch elastic-stack elasticsearch-5