{
// 这是查询
"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 -> 行” 即可