我正在尝试构建一个简单的自动完成,其中数据来自Elasticsearch,我似乎遇到了问题。
我在Elasticsearch中保留了活动参与者的注册信息。
registration:{
name: "John Doe",
title: "Mr",
country: "AU",
position: "Employee"
}
由于有数百个事件,“John Doe”在ES中可能有数百个点击
我正在建立一个自动完成,我想只显示John Doe的独特版本。
E.g。
我可能有第1行的50,第2行的20和第3行的100。
据我所知,我不能使用存储桶,因为它们聚合在一行上,我需要整个文档。
有没有简单的方法来实现这一目标?
像
按名称,标题,国家/地区,位置从表格组中选择姓名,职位,国家/地区,职位
答案 0 :(得分:0)
如果您希望使用存储桶..您可以使用文本的连接版本作为要聚合的术语。 你可以根据需要使用脚本,
e.g。
"terms":{
"script":"doc['name'].value
+ '|' + doc['title'].value
+ '|' + doc['country'].value
+ '|' + doc['position'].value"
}
对于每个创建的存储桶,您将获得一个键,其中包含脚本中包含的字段值。
但是,您可以查看elasticsearch中的Completion Suggester,您无需明确处理重复项。