一架梯子,一头程序猿,仰望星空!
Elasticsearch面试题 > 内容正文

什么是聚合查询?请举例说明几种常见的聚合类型。


问题简答

聚合查询是 Elasticsearch 中一种用于对文档进行分组和汇总的查询。聚合查询可以统计字段的最大值、最小值、平均值、总和等统计信息,并将结果以图表或表格等形式展示。常见的聚合类型包括桶聚合、指标聚合、嵌套聚合等。

问题详解:

桶聚合

桶聚合是将文档分组为多个桶,然后对每个桶进行统计的聚合类型。桶聚合可以对文档进行多维度的分析,如按照字段值、日期、范围等进行分组,从而提供更具体和更有意义的聚合结果。

例子
以下是一个简单的 Terms Aggregation,按照 color 字段进行分组,统计每个颜色的商品数量:

{
    "aggs": {
        "colors": {
            "terms": {
                "field": "color"
            }
        }
    }
}

指标聚合

指标聚合是对文档进行统计并返回一个单一的指标结果的聚合类型。指标聚合可以计算文档数量、字段的最大值、最小值、平均值、总和等统计信息,从而帮助我们了解数据的总体情况。

例子
以下是一个简单的 Metrics Aggregation,计算 price 字段的平均值:

{
    "aggs": {
        "avg_price": {
            "avg": {
                "field": "price"
            }
        }
    }
}

嵌套聚合

嵌套聚合是将一个聚合作为另一个聚合的子聚合进行查询的聚合类型。嵌套聚合可以对多个字段进行统计,并提供更全面和更精确的聚合结果。

例子
以下是一个简单的 Nested Aggregation,统计每个颜色中的最高价格:

{
    "aggs": {
        "colors": {
            "terms": {
                "field": "color"
            },
            "aggs": {
                "max_price": {
                    "max": {
                        "field": "price"
                    }
                }
            }
        }
    }
}

详细教程,请参考:ES统计分析教程