首页 > 其他分享 >elasticsearch聚合查询

elasticsearch聚合查询

时间:2022-10-11 23:36:03浏览次数:48  
标签:聚合 agg price 查询 field elasticsearch place avg

聚合查询分三类:桶聚合、指标聚合、管道聚合。

1:桶聚合:通俗的讲就是按某个属性分类,统计该属性数量

GET how2java/product/_search //查询每个地方商品数量
{
  "size": 0, 
  "aggs": {
    "place_agg": {
      "terms": {
        "field": "place.keyword",  //按地域分类,
        "size": 100, //默认只查询数据量最大的前10条数据
      }
    }
  }
}

结果:

 

 

 

2:指标聚合:常用的就是查询平均值、最大最小值、总数、去重总数、求和

GET how2java/product/_search
{
  "size": 0,
  "aggs": {
    "max_agg": {
      "max": {
        "field": "price"
      }
    },
    "min_agg": {
      "min": {
        "field": "price"
      }
    },
    "avg_agg": {
      "avg": {
        "field": "price"
      }
    },
    "count_agg": {
      "value_count": {
        "field": "price"
      }
    },
    "cardinality_agg": {
      "cardinality": {
        "field": "place.keyword"
      }
    }
  }
}

这个比较好理解

 

前两种比较好理解

3、管道聚合,又叫二次聚合,用于一些复杂的查询

GET how2java/_search   //求商品平均价格最低和最高的地域和其平均价格
{
  "size": 0,
  "aggs": {
    "place_bucket": {   //第一步
      "terms": { //先按地域分桶
        "field": "place.keyword",
        "size": 100
      },
      "aggs": {  //在地域桶的同级求每个地域商品的平均价格
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    },
    "min_place": { //第二步 二次聚合 使用pipeline
      "min_bucket": {//求平均价格最低的桶
        "buckets_path": "place_bucket>avg_price"
      }
    },
    "max_place": {
      "max_bucket": {//求平均价格最高的桶
        "buckets_path": "place_bucket>avg_price"
      }
    }
  }
}

.......管道聚合待深入学习

标签:聚合,agg,price,查询,field,elasticsearch,place,avg
From: https://www.cnblogs.com/wscw/p/16782991.html

相关文章