ElasticSearch之聚合aggs
在ElasticSearch中,aggs
是聚合的意思,它允许你对数据执行复杂的分析操作,比如计算平均值、求和、求最大值最小值等。
以下是一个使用aggs
的例子,假设我们有一个记录销售数据的ElasticSearch索引,我们想要计算所有销售记录的平均价格:
GET /sales/_search
{
"size": 0,
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
}
在这个查询中,size
设置为0表示我们不需要返回任何文档,因为我们只关心聚合结果。aggs
定义了一个名为average_price
的聚合,该聚合使用avg
聚合器来计算price
字段的平均值。
这是一个非常基础的聚合示例,ElasticSearch的聚合还支持更复杂的操作,比如分桶(Buckets)聚合、指标(Metrics)聚合等。以下是一个更复杂的例子,我们按照品牌对销售价格进行分桶,并计算每个品牌的平均价格和销售数量:
GET /sales/_search
{
"size": 0,
"aggs": {
"brands": {
"terms": {
"field": "brand.keyword"
},
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
},
"sales_count": {
"value_count": {
"field": "id"
}
}
}
}
}
}
在这个查询中,brands
是一个分桶聚合器,它根据brand.keyword
字段的值对数据进行分桶。每个品牌的文档会进入对应的桶,然后我们可以在每个桶内进行average_price
和sales_count
的计算。
评论已关闭