Эластичный поиск date_histogram extended_bounds
Я хочу получить date_histogram в течение определенного периода, как ограничить период даты? Должен ли я использовать параметр extended_bounds? Например: я хочу запросить гистограмму date_ между 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_his в диапазоне.
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 документ каждый день между 2016-08-04 и 2016-08-28, а затем без extended_bounds
параметр, вы получите 25 сегментов (2016-08-04, 2016-08-05, 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