我在我的环境中使用弹性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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
回应:
{
"suggest": {
"hash-suggest": [
{
"options": [
{
"text": "invalid",
"_source": {
"post_hashtags": [
"invalid"
]
}
},
{
"text": "invalid",
"_source": {
"post_hashtags": [
"invalid",
"coment_me",
"daya"
]
}
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这里"invalid"被返回两次,因为它也是其他文档中相同字段"post_hashtags"的输入字符串.
问题是如果相同索引中的1000个文档中存在相同的"无效"输入字符串,那么我将得到1000个重复的建议,这是巨大的,不需要.
我可以在类型完成的字段上应用聚合吗?
有没有什么方法可以得到唯一的建议而不是重复的文本字段,即使我有相同的输入字符串给同一索引的多个文档中的特定字段?