主要知识点:
- date hitogram之统计每月电视销量
上一节讲到histogram,他是以数值进行分组。本节讲到以日期进行bucket分组操作,也就是说把连续的日期变成离散的日期区间,然后进行聚合分析操作。date histogram,按照我们指定的某个date类型的日期field,以及日期interval,按照一定的日期间隔,去划分bucket。
语法:
GET /tvs/sales/_search
{
"size" : 0,
"aggs": {
"sales": {
"date_histogram": {
"field": "sold_date",
"interval": "month",
"format": "yyyy-MM-dd",
"min_doc_count" : 1,
"extended_bounds" : {
"min" : "2016-01-01",
"max" : "2017-12-31"
}
}
}
}
}
min_doc_count:0。表赤即使某个日期interval,2017-01-01~2017-01-31中,一条数据都没有,那么这个区间也是要返回的,不然默认是会过滤掉这个区间的。如果设为1.也就是说这个区间至少要有一条数据才返回。
extended_bounds,min,max:划分bucket的时候,会限定在这个起始日期,和截止日期内,不在这个区间内的日期会被自动过滤掉,不作为结果返回,也不会进行分组。
执行结果如下(部分):
"aggregations": {
"group_by_sold_date": {
"buckets": [
{
"key_as_string": "2016-01-01",
"key": 1451606400000,
"doc_count": 0
},
{
"key_as_string": "2016-05-01",
"key": 1462060800000,
"doc_count": 1
},