本文介绍了如何使用Python在Elasticsearch中的对象上执行多次聚合?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想对以下格式的Elasticsearch数据执行日期直方图查询:
I want to perform date histogram query on my Elasticsearch data which is of the format:
datetime,field_obj
和field_obj中有三个字段: a,b,c
datetime,field_obj
and field_obj has three fields in it: a,b,c
我想对日期日期直方图进行汇总求出field_obj的平均值,即avg(field_a),avg(field_b),avg(field_c)。
我尝试过这样计算:
Alongside date histogram aggregation, I want to find the average of field_obj i.e avg(field_a), avg(field_b), avg(field_c) also.I tried working it out like this:
res = es.search(index="demo",body={"from": 0, "size": 0, "query":
{"match_all": {}}, "aggs": {
"date_avg": {
"date_histogram": {"field": "datetime","interval": "year"},
"aggs": {"avg_a": {"avg": {"field": "field.a"}}},
"aggs": {"avg_b": {"avg": {"field": "field.b"}}},
"aggs": {"avg_c": {"avg": {"field": "field.c"}}},
}}
})
但是,此查询仅产生field_c的平均值。
However, this query only yields an average of field_c. All the other averages are getting overridden.
推荐答案
好的开始!您需要这样做,这样才能正常工作:
Good start! You need to do it like this and it will work:
res = es.search(index="demo",body={
"from": 0,
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"date_avg": {
"date_histogram": {
"field": "datetime",
"interval": "year"
},
"aggs": {
"avg_a": {
"avg": {
"field": "field.a"
}
},
"avg_b": {
"avg": {
"field": "field.b"
}
},
"avg_c": {
"avg": {
"field": "field.c"
}
}
}
}
}
})
这篇关于如何使用Python在Elasticsearch中的对象上执行多次聚合?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!