我有以下形式的数据输入
{
"id": "ABCxxx",
// Other fields
}
其中
ABC
是定义此记录的“类型”的唯一标识符。 (例如,用户为USR1234...
,图像为IMG1234...
)我想获取我在ES中拥有的所有不同类型的记录的列表。因此,从本质上讲,我想按
id
进行排序,但仅查看id的前三个字符。这显然不起作用,因为它按
id
排序(因此USR123
与USR456
不同):{
"fields": ["id"],
"aggs": {
"group_by_id": {
"terms": {
"field": "id"
}
}
}
}
如何编写此查询?
最佳答案
正如 paqash 所建议的那样,可以通过脚本来实现相同的目的,但是我建议您在架构中将“类型”存储为不同的字段。
例如。
USR1234 : {id:"USR1234", type:"USR"}
IMG1234 : {id:"USR1234", type:"IMG"}
这样可以避免脚本编写过程中不必要的麻烦,并使查询界面保持整洁。
关于elasticsearch - Elasticsearch按字段前缀聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42449176/