Elasticsearch 子聚合
子聚合(Sub-Aggregation)是Elasticsearch的一个强大功能,它允许你在聚合中嵌套聚合。子聚合可以帮助你对聚合结果进行进一步的分析和处理。
以下是一个使用Python elasticsearch库的例子,它演示了如何在Elasticsearch中使用子聚合:
from datetime import datetime
from elasticsearch import Elasticsearch
# 连接到Elasticsearch
es = Elasticsearch("http://localhost:9200")
# 定义查询
query = {
"query": {
"range" : {
"timestamp" : {
"gte" : "now-1h"
}
}
},
"aggs": {
"per_minute_average": {
"date_histogram": {
"field": "timestamp",
"interval": "minute"
},
"aggs": {
"average_temperature": {
"avg": {
"field": "temperature"
}
}
}
}
},
"size": 0
}
# 执行查询
response = es.search(index="weather", body=query)
# 打印结果
for bucket in response['aggregations']['per_minute_average']['buckets']:
print(f"{bucket['key_as_string']}: {bucket['average_temperature']['value']}")
在这个例子中,我们首先定义了一个查询,它使用了一个日期直方图聚合(date_histogram
)来按分钟分组,并计算每分钟的平均温度。然后,我们嵌套了一个平均值聚合(avg
)来计算每个桶的平均温度值。最后,我们执行查询并打印出每个时间段的平均温度。
评论已关闭