我有一个充满文件的索引。他们每个人都有一个关键的“用户ID”,每个用户都有一个不同的值,但是每个用户可能有多个文档。每个用户都有其他属性(例如“颜色”,“动物”)。
我需要获取每个属性的汇总计数,具体如下:
aggs: {
colors: { terms: { field: color } },
animals: { terms: { field: animal } }
}
但是我需要每个唯一用户标识的这些计数,也许是:
aggs: {
group-by: { field: userid },
sub-aggs: {
colors: { terms: { field: color } },
animals: { terms: { field: animal } }
}
}
我查看了嵌套的聚合,但是如果有帮助的话,并没有理解。
这可能吗?
最佳答案
要嵌套这些术语(类似于SQL中的GROUP BY),只需创建更多的聚合级别即可。
目前尚不清楚您希望在最低级别获得什么总数,但是此查询将返回三个不同级别的文档计数:
curl -XGET 'http://localhost:9200/myindex/mypets/_search?pretty' -d '{
"query": {
"query_string": { "query":"some query", "fields": ["field1", "field2"]}
},
"aggs" : {
"userid_agg" : {
"terms": { "field" : "userid"},
"aggs" : {
"colors_agg" : {
"terms": { "field" : "color"},
"aggs" : {
"animals_agg" : {
"terms": { "field" : "animal"}
}
}
}
}
}
}
}'
关于elasticsearch - 基于唯一键的术语汇总,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27484789/