elasticsearch 聚合之后获取桶的平均值avg_bucket或者stats_bucket

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

例子


GET /collect_data_store_goods_fact*/_search
{
  
  "query": {
    "match_all": {}
  },
  "size": 0,
  
  "aggs": {
    
       "brand":{
         "terms": {
           "field": "orgId",
           "size": 2,
           "order": {
             "or_totalSaleGoodsAmountSum": "desc"
           }
         },
         "aggs": {
           "or_totalSaleGoodsAmountSum": {
             "sum": {
               "field": "store_goods_totalSaleGoodsAmount"
             }
           }
           
           
         }
         
         
       },
       
       "stats_monthly_sales": {
            "stats_bucket": {
                "buckets_path": "brand>or_totalSaleGoodsAmountSum" 
            }
        },
        
        "avg_stately_age" : {
          "avg_bucket": {
            "buckets_path": "brand>or_totalSaleGoodsAmountSum"
          }
        },
        
       
      
       
    
           "store_goods_totalSaleGoodsAmountALL": {
          "sum": {
            "field": "store_goods_totalSaleGoodsAmount"
             
          }
         
        }
   
    
  }
    
  
}

执行结果
{
  "took" : 6,
  "timed_out" : false,
  "_shards" : {
    "total" : 10,
    "successful" : 10,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 30,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "store_goods_totalSaleGoodsAmountALL" : {
      "value" : 1.6650087E7
    },
    "brand" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 12,
      "buckets" : [
        {
          "key" : 13274,
          "doc_count" : 17,
          "or_totalSaleGoodsAmountSum" : {
            "value" : 1.6112652E7
          }
        },
        {
          "key" : 13278,
          "doc_count" : 1,
          "or_totalSaleGoodsAmountSum" : {
            "value" : 299700.0
          }
        }
      ]
    },
    "stats_monthly_sales" : {
      "count" : 2,
      "min" : 299700.0,
      "max" : 1.6112652E7,
      "avg" : 8206176.0,
      "sum" : 1.6412352E7
    },
    "avg_stately_age" : {
      "value" : 8206176.0
    }
  }
}






因为 bucket 似乎默认是 返回10个 桶的,除非指定 size 将所有桶都 返回出来否则计算 桶的平均值 是 用 显示出来的 桶的数据/size 的。

也就是 说 avg_bucket 并不能 获取到 分组之后 所有桶的  平均值了。

 

 

 

 

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看