ES操作随笔之多层聚合查询到底该怎么写?

{
   // 这是查询
   "query": {
      "bool": {
         "must": [
            {
               "range": {
                  "catm": {
                      // 这里的时间范围会影响到我们后面的对时间的聚合
                     "from": "2018-12-29T00:00:00Z",
                     "to": "2019-01-04T23:59:59Z"
                  }
               }
            },
            {	
               "terms": {
                  // 这里的查询其实和下面的二层聚合字段是一样的
                  "newa": [
                     ........ // 这里我查的是什么就不展示了,公司数据~
                  ]
               }
            }
         ]
      }
   },
   // 因为做聚合查询,所以这里我们返回0个source
   "size": 0,
   // 聚合块->一级
   "aggs": {
       // 一定要指定别名
      "data": {
         // 首先对时间按照天为单位聚合
         "date_histogram": {
            "field": "catm",
            "interval": "day",
            "format": "yyyy-MM-dd"
         },
          // 聚合块->二级
         "aggs": {
             // 其实多层聚合重不重名无所谓,只要自己看着舒服即可
            "data": {
            	// 指定聚合字段
               "terms": {
                  "field": "newa",
                   // 返回结果已经按照doc_count进行了排序,所以如果我们要返回所有的结果,那么这里设置一个比聚合结果数量大的一个数即可
                  "size": 100
               },
                // 聚合块->三级
               "aggs": {
                  "subdata": {
                     "terms": {
                        "field": "vccl"
                     	// 这里不指定size就默认返回十个聚合结果
                     }
                  }
               }
            }
         }
      }
   }
}

现在看看返回结果结构:

"aggregations": {
      "data": {
      	 // 一层聚合结果
         "buckets": [
            {
               "key_as_string": "2018-12-29",
               "key": 1546041600000,
               "doc_count": 54468,
               "data": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 0,
                  // 二层聚合结果
                  "buckets": [
                     {
                        "key": "这个key就不展示了",
                        "doc_count": 7819,
                        "subdata": {
                           "doc_count_error_upper_bound": 0,
                           "sum_other_doc_count": 0,
                           // 三层聚合结果
                           "buckets": [
                              {
                                 "key": 2,
                                 "doc_count": 6321
                              },
                              {
                                 "key": 1,
                                 "doc_count": 1498
                              }
                           ]
                        }
                     }
// 后面的数据我就不展示啦啊哈哈哈

数据出来各位自行写入excel等文件即可。
一般三层聚合结果组织可以用 “文件 -> sheet -> 行” 即可

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值