绊脚石乃是进身之阶。

ES 如何指定起止时间和步长来进行时间聚合

Elasticsearch | 作者 user_name | 发布于2018年10月03日 | 阅读数:6687

本人新手,在百度上查了半天也没找到想要的答案,求大佬帮帮忙,不胜感激。
代码如下
{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggregations": {
    "time_slice": {
      "histogram": {
        "field": "timestamp",
        "interval": 86400,
        "min_doc_count": 0,
        "extended_bounds": {
          "min": 1523901600,
          "max": 1526839200
        }
      }
    }
  }
}
步长可以通过interval指定,但是起止时间没法控制。返回结果的第一个桶的时间戳是1523836800(2018/4/16 8:0:0,默认从8点?),早于extended_bounds指定的min。我知道extended_bounds是控制min_doc_count的范围的。想问一下有什么方法可以指定起止时间和步长来进行聚合吗?比如从2018/4/16 0:0:0到2018/5/16 0:0:0 时间间隔为24小时。
(我不想写循环用range来过滤进行统计,想先看看有没有聚合一次就能解决问题的方法)ES版本 2.3.15,用python2.7写后台查询ES
已邀请:

user_name

赞同来自:

我之所以用histogram是因为它可以自动截取索引数据的时间范围。比如整个索引时间上的第一条数据是2018/4/16 8:47:52,最后一条数据是2018/5/17 0:43:55. 那么histogram会自动生成一个时间区间,但这个区间的两个端点是自动生成的。有什么方法可以指定这个区间的起点和终点吗?

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自:

为什么不用 date_histogram?另外时间起止时间加载 query 里面限定查询的数据即可

要回复问题请先登录注册