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