【发布时间】:2015-02-04 04:07:06
【问题描述】:
我有以下格式的文件:
{
_id :"1",
tags:["guava","apple","mango", "banana", "gulmohar"]
}
{
_id:"2",
tags: ["orange","guava", "mango shakes", "apple pie", "grammar"]
}
{
_id:"3",
tags: ["apple","grapes", "water", "gulmohar","water-melon", "green"]
}
现在,我想从以前缀g* 开头的整个文档“标签字段”中获取唯一标签值,以便标签建议器显示这些唯一标签(以 Stackoverflow 站点为例)。
例如:每当用户键入“g”时:
"guava", "gulmohar", "grammar", "grapes" and "green" 应该作为结果返回。
IE。查询应该返回带有前缀 g* 的不同标签。
我到处都试过了,浏览了整个文档,搜索了 es 论坛,但我没有找到任何线索,这让我很沮丧。
我尝试了聚合,但聚合返回标签字段中整个单词/标记的不同计数。它不返回以“g”开头的唯一标签列表。
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"query_string": {
"allow_leading_wildcard": false,
"fields": [
"tags"
],
"query": "g*",
"fuzziness":0
}
}
]
}
},
"filter": {
//some condition on other field...
}
}
},
"aggs": {
"distinct_tags": {
"terms": {
"field": "tags",
"size": 10
}
}
},
以上结果:guava(w), apple(q), mango(1),...
有人可以建议我获取所有带有前缀 input_prefix* 的不同标签的正确方法吗?
【问题讨论】:
标签: elasticsearch