在 Elasticsearch 中,数据聚合是使用聚合(aggregations)框架实现的。聚合是一种类似于 GROUP BY 子句的功能,能够对文档进行分组,并计算每个分组的指标。
Elasticsearch 支持多种类型的聚合操作,其中最常用的包括:
下面是一个简单的 Elasticsearch 聚合示例,用于按 customer_id 字段进行分组,并计算每个分组中 order_amount 字段的总和:
GET /sales/_search
{
"size": 0,
"aggs": {
"group_by_customer": {
"terms": {
"field": "customer_id"
},
"aggs": {
"total_sales": {
"sum": {
"field": "order_amount"
}
}
}
}
}
}
在这个聚合中,我们首先指定了我们不需要原始文档的数据,因此将 "size"
参数设置为 0。接着,我们定义了一个名为 "group_by_customer"
的 terms 聚合,它将按照 "customer_id"
字段进行分组。最后,我们在这个聚合内定义了一个名为 "total_sales"
的 sum 聚合,它将计算每个分组内 "order_amount"
字段的总和。
以上仅是一个简单的示例,Elasticsearch 还支持更多高级的聚合操作,包括嵌套聚合、桶排序、子聚合等。