弹性搜索中的Date_Histogram

时间:2017-03-23 10:41:06

标签: elasticsearch elastic-stack

今天我有一项任务,我必须按1小时间隔汇总数据。所以我在弹性搜索中使用了Date_Histogram聚合。以下是查询:

GET test-2017.02.01/_search
{
  "size" : 0,

  "aggs": {
    "range_aggs": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "hour",
        "format": "yyyy-MM-dd HH:mm"
      }
    }
  }

}

我得到了以下结果:

    "aggregations": {
    "range_aggs": {
      "buckets": [
        {
          "key_as_string": "2017-02-01 12:00",
          "key": 1485950400000,
          "doc_count": 4027
        },
        {
          "key_as_string": "2017-02-01 13:00",
          "key": 1485954000000,
          "doc_count": 0
        }
      ]
    }
  }

到目前为止,我已经运行了这个查询一天了,但是当我在这种情况下运行查询多天时,我每天都会获得密钥。 我的问题是 - 如何获取所有日子的小时间隔数据(上午9点至上午10点,上午10点至上午11点,等等)?

1 个答案:

答案 0 :(得分:0)

    {
  "aggs": {
    "range_aggs": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "day",
        "min_doc_count": 1
      },
      "aggs": {
        "range_aggs": {
          "date_histogram": {
            "field": "@timestamp",
            "interval": "hour"
          }
        }
      }
    }
  }
}

如果您需要按小时分组的响应,请在几天之内尝试该响应。