date_histogram
date histogram,即按照我们指定的某个date类型的日期field,以及日期interval,按照一定的日期间隔,去划分bucket,date interval = 1m,1个月
2017-01-01~2017-01-31,就是一个bucket
2017-02-01~2017-02-28,就是一个bucket
然后会去扫描每个数据的date field,判断date落在哪个bucket中,就将其放入那个bucket,2017-01-05,就将其放入2017-01-01~2017-01-31,就是一个bucket
min_doc_count:设置为0 ,就是即使某个日期interval,2017-01-01~2017-01-31中,一条数据都没有,那么这个区间也是要返回的,不然默认是会过滤掉这个区间的 。 如果不希望展示没有销量的月份, min_doc_count:设置为1即可,即至少要有1条数据。
extended_bounds,min,max:划分bucket的时候,会限定在这个起始日期,和截止日期内
统计每月的出生人数
GET /user/_search { "size":0, "aggs":{ "birth_count":{ "date_histogram":{ "field":"birthday", "calendar_interval":"1M", "format":"yyyy-MM-dd", "min_doc_count":0, "extended_bounds":{ "min":"2020-01-01", "max":"2020-12-31" } } } } }
统计每季度每个用户的阅读总量
GET /forum/_search { "size":0, "aggs":{ "views":{ "date_histogram":{ "field":"postDate", "calendar_interval":"quarter", "format":"yyyy-MM-dd", "min_doc_count":0, "extended_bounds":{ "min":"2017-01-01", "max":"2017-12-31" } }, "aggs":{ "per_user_sum":{ "terms":{ "field":"userID" }, "aggs":{ "sum_views":{ "sum":{ "field":"view_cn" } } } }, "total_sum":{ "sum":{ "field":"view_cn" } } } } } }
结果
{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 5, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "views" : { "buckets" : [ { "key_as_string" : "2017-01-01", "key" : 1483228800000, "doc_count" : 5, "per_user_sum" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : 1, "doc_count" : 3, "sum_views" : { "value" : 170.0 } }, { "key" : 2, "doc_count" : 2, "sum_views" : { "value" : 180.0 } } ] }, "total_sum" : { "value" : 350.0 } }, { "key_as_string" : "2017-04-01", "key" : 1491004800000, "doc_count" : 0, "per_user_sum" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ ] }, "total_sum" : { "value" : 0.0 } }, { "key_as_string" : "2017-07-01", "key" : 1498867200000, "doc_count" : 0, "per_user_sum" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ ] }, "total_sum" : { "value" : 0.0 } }, { "key_as_string" : "2017-10-01", "key" : 1506816000000, "doc_count" : 0, "per_user_sum" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ ] }, "total_sum" : { "value" : 0.0 } } ] } } }
立志如山 静心求实
浙公网安备 33010602011771号