Упругий поиск date_histogram extended_bounds

Я хочу получить date_histogram за определенный период, как ограничить период даты? Должен ли я использовать параметр extended_bounds? Например: я хочу запросить date_histogram между «2016-08-01» и «2016-08-31», а интервал — день. Я запрашиваю это выражение:

{
  "aggs": {
    "cf_loan": {
      "date_histogram": {
        "field": "createDate",
        "interval": "day",
        "format": "yyyy-MM-dd",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": "2016-08-01",
          "max": "2016-08-31"
        }
      }
    }
  }
}

Но я получаю date_histogram не в диапазоне.


person zhongwei    schedule 05.09.2016    source источник


Ответы (1)


Вы почти закончили, вам нужно добавить запрос range, чтобы выбрать только те документы, поле createDate которых находится в нужном диапазоне.

{
  "query": {
    "range": {                           <---- add this range query
      "createDate": {
        "gte": "2016-08-01T00:00:00.000Z",
        "lt": "2016-09-01T00:00:00.000Z"
      }
    }
  },
  "aggs": {
    "cf_loan": {
      "date_histogram": {
        "field": "createDate",
        "interval": "day",
        "format": "yyyy-MM-dd",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": "2016-08-01",
          "max": "2016-08-31"
        }
      }
    }
  }
}

Роль параметра extended_bounds заключается в том, чтобы убедиться, что вы получаете ежедневные сегменты с min по max, даже если в них нет документов. Например, скажем, у вас есть 1 документ каждый день в период с 04.08.2016 по 28.08.2016, тогда без параметра extended_bounds вы получите 25 сегментов (04.08.2016, 05.08.2016, 05.08.2016). 08-06, ..., 2016-08-28).

С параметром extended_bounds вы также получите следующие сегменты, но с 0 документами:

  • 2016-08-01
  • 2016-08-02
  • 2016-08-03
  • 2016-08-29
  • 2016-08-30
  • 2016-08-31
person Val    schedule 05.09.2016
comment
спасибо, что поделились здесь опцией extended_bounds. - person Shivam Pandey; 28.01.2020
comment
Может ли кто-нибудь дать некоторые рекомендации о том, как сделать date_histogram с расширенными границами в sql? - person Harshit Nagar; 15.04.2021