我有一个包含字段campaign_id
(不是唯一的)、clicks
(每个campaign_id
相同)的文档。如何计算唯一的campaign_id
s clicks
的和。例如:
campaign_id=1, clicks=2;
campaign_id=2, clicks=3;
campaign_id=1, clicks=2;
唯一的campaign_id
的clicks
之和为5。
其主要思想是获取具有唯一campaign_ids
的文档,然后进行求和。
如何在Elasticsearch中创建这样的查询?
试图使用聚合内部的过滤器来实现这一点,但是过滤器应该是一个桶而不是度量。
发布于 2015-11-12 15:02:16
最简单的方法是在ES 2.0中使用管道集料,首先使用max
聚合来获得单个值(因为您已经说过相同的campaign_id
具有相同的clicks
值),然后使用sum_bucket
管道聚合来获得最后的和:
{
"size": 0,
"aggs": {
"unique_ids": {
"terms": {
"field": "campaign_id",
"size": 10
},
"aggs": {
"one_value": {
"max": {
"field": "clicks"
}
}
}
},
"sum_uniques": {
"sum_bucket": {
"buckets_path": "unique_ids>one_value"
}
}
}
}
https://stackoverflow.com/questions/33670083
复制相似问题