Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,它提供了强大的聚合功能,可以帮助你从大量数据中提取有价值的信息。以下是一些常见的 Elasticsearch 聚合操作:
指标聚合(Metric Aggregations):
count
:计算文档数量。sum
:对某个字段求和。avg
:计算某个字段的平均值。min
:找到某个字段的最小值。max
:找到某个字段的最大值。桶聚合(Bucket Aggregations):
date_histogram
:按日期范围对文档进行分组。histogram
:按数值范围对文档进行分组。terms
:按字符串或数值字段对文档进行分组。filters
:基于多个过滤条件对文档进行分组。嵌套聚合(Nested Aggregations):
反嵌套聚合(Reverse Nested Aggregation):
子聚合(Children Aggregations):
Missing 聚合(Missing Aggregation):
Sampler 聚合(Sampler Aggregation):
以下是一个简单的 Elasticsearch 查询示例,展示了如何使用 terms
和 avg
聚合:
GET /your_index_name/_search
{
"size": 0,
"aggs": {
"group_by_category": {
"terms": {
"field": "category.keyword"
},
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
在这个示例中,我们首先使用 terms
聚合按 category
字段的值对文档进行分组,然后在每个分组内计算 price
字段的平均值。
要执行这个查询,你可以使用 Elasticsearch 的 REST API 或者客户端库(如 Elasticsearch-Py、Elasticsearch-JS 等)。记得根据你的实际索引名称和字段名称调整查询中的 your_index_name
和字段名。