ElasticSearch之聚合aggs
    		       		warning:
    		            这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
    		        
        		                
                在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的计算。
评论已关闭