Elasticsearch Date_Histogram не охватывает весь фильтр

Я использую гистограмму ES Date, и странное поведение начало происходить, и мне интересно, почему.

Это запрос, который я отправляю на asticsearch:

{
   "from": 0,
   "size": 0,
   "query": {
      "filtered": {
         "filter": {
            "and": [
               {
                  "bool": {
                     "must": [
                        {
                           "range": {
                              "publishTime": {
                                 "from": "2010-07-02T12:15:20.000Z",
                                 "to": "2015-07-08T12:43:59.000Z"
                              }
                           }
                        }
                     ]
                  }
               }
            ]
         }
      }
   },
   "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
         }
      }
   }
}

В результате я получаю ведра, и первое ведро:

{
   "key_as_string": "2010-08-24T00:00:00.000Z",
   "key": 1282608000000,
   "doc_count": 1
}

Так что я фильтрую с 2010-07-02 и получаю результаты только с 2010-08-24

Это всего лишь пример, я также видел такое поведение с большим количеством недостающих сегментов (несколько месяцев).

[править] это, кажется, коррелирует с датой первого результата, что означает, что первый результат в этом диапазоне времени от 2010-08-24, но, как я включил "min_doc_count": 0 Я ожидаю получить результаты от всего этого диапазона

1 ответ

Решение

min_doc_count достаточно только для возврата пустых сегментов между первым и последним документами, соответствующими вашему фильтру. Если вы хотите получить результаты для всего диапазона, вам нужно использовать extended_bounds также:

  "aggs": {
      "agg|date_histogram|publishTime": {
         "date_histogram": {
            "field": "publishTime",
            "interval": "1d",
            "min_doc_count": 0
            "extended_bounds": {
                "min": 1278072920000, 
                "max": 1436359439000
            }
         }
      }
   }
Другие вопросы по тегам