elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结
在Elasticsearch中,我们可以使用不同类型的聚合(aggregations)来对数据进行复杂的分析。下面是对不同类型的聚合以及它们的用法的概述和示例代码。
指标聚合(Metrics Aggregations)
指标聚合主要用于计算字段值的统计信息,如最小值、最大值、平均值等。
GET /exams/_search
{
"size": 0,
"aggs": {
"avg_grade": {
"avg": {
"field": "grade"
}
}
}
}
桶聚合(Bucket Aggregations)
桶聚合用于分组文档,如按照地理位置、日期范围或文本值进行分组。
GET /exams/_search
{
"size": 0,
"aggs": {
"group_by_grade": {
"terms": {
"field": "grade"
}
}
}
}
管道聚合(Pipeline Aggregations)
管道聚合可以使用其他聚合结果作为输入。
GET /exams/_search
{
"size": 0,
"aggs": {
"avg_grade": {
"avg": {
"field": "grade"
}
},
"grade_count": {
"value_count": {
"field": "grade"
}
},
"avg_grade_with_count": {
"bucket_script": {
"buckets_path": {
"count": "grade_count.value",
"avgGrade": "avg_grade"
},
"script": "params.avgGrade / params.count"
}
}
}
}
在这个例子中,我们先计算了平均分,然后计算了考试成绩的数量,最后使用管道聚合计算每个考试的平均分(将平均分除以成绩数量)。这种类型的聚合可以用于更复杂的计算。
评论已关闭