Elasticsearch查询需求:按分钟区间计算指定条件的平均值
解决方法
你只需要在聚合流程里先筛选出condition为"B"的数据,再进行平均值计算就可以了。可以通过添加filter聚合来实现这个需求,修改后的完整查询语句如下:
{ "aggs": { "student_data": { "date_histogram": { "field": "@timestamp", "calendar_interval": "minute" }, "aggs": { "filter_condition_b": { "filter": { "term": { "condition": "B" } }, "aggs": { "user_avg": { "avg": { "field": "value" } } } } } } } }
关键修改说明:
- 新增了
filter_condition_b这个filter聚合,它会先把所有condition字段值为"B"的文档筛选出来 - 把原来的
user_avg平均值聚合放到这个filter聚合内部,这样计算出的平均值就只会基于符合条件的数据 - 外层的
date_histogram依然会按分钟对时间进行分组,最终结果会按分钟返回每个时间桶内condition为B的value平均值
内容的提问来源于stack exchange,提问作者Harmeet Kaur
相关产品推荐
相关产品推荐

