我有一个包含关键字列表的属性的索引。
假设我的文档如下所示:
{
"product_name": "Iphone",
"keywords" : ["Best seller", "Apple", "Black", "Awesome"]
}
{
"product_name": "Galaxy S21",
"keywords" : ["Awesome", "Android"]
}
我想让我的用户对关键字进行自动补全(比如建议),但我也想对建议进行聚合,让他们知道有多少文档与每个匹配。
所以如果用户输入“A”,我们应该返回 3 个结果:
{"expression": "Android", "count": 1}
{"expression": "Apple", "count": 1}
{"expression": "Awesome", "count": 2}
“Best Seller”/“Black”不应作为 Elasticsearch 的结果返回。
没有映射约束。
我尝试过类似下面的查询,但聚合中返回了意外的关键字:
{
"query": {
"multi_match": {
"query": "a",
"fields": ["keywords"],
"type": "bool_prefix"
}
},
"size": 0,
"aggs": {
"matched_keywords": {
"terms": {
"field": "keywords",
"size": 10
}
}
}
}
任何解决方案/建议都会有所帮助。
谢谢。