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
          }
        }
      ]
    }
  }
}

 

 

 

  

  

posted on 2021-09-01 08:27  溪水静幽  阅读(835)  评论(0)    收藏  举报