【发布时间】:2018-12-05 23:41:26
【问题描述】:
我在我的环境中使用弹性 5.1.1。我在字段名称post_hashtags 上选择了完成建议器,并带有一组字符串以对其提出建议。我收到以下前缀“inv”的响应
请求:
POST hashtag/_search?pretty&&filter_path=suggest.hash-suggest.options.text,suggest.hash-suggest.options._source
{"_source":["post_hashtags" ],
"suggest": {
"hash-suggest" : {
"prefix" : "inv",
"completion" : {
"field" : "post_hashtags"
}
}
}
回应:
{
"suggest": {
"hash-suggest": [
{
"options": [
{
"text": "invalid",
"_source": {
"post_hashtags": [
"invalid"
]
}
},
{
"text": "invalid",
"_source": {
"post_hashtags": [
"invalid",
"coment_me",
"daya"
]
}
}
]
}
]
}
这里“invalid”返回两次,因为它也是其他文档中相同字段“post_hashtags”的输入字符串。
问题是,如果相同索引中的 1000 个文档中存在相同的“无效”输入字符串,那么我将获得 1000 个重复的建议,这些建议很大且不需要。
我可以在完成类型的字段上应用聚合吗?
有没有什么方法可以让我获得独特的建议而不是重复的文本字段,即使我在相同索引的多个文档中为特定字段提供了相同的输入字符串?
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/a/41800102/4604579
标签: elasticsearch lucene search-suggestion