#elasticsearch
#elasticsearch
Вопрос:
Агрегирование гистограммы округляет каждый результат до ближайшего сегмента в пределах интервала:
Если в документах есть поле, содержащее цену (числовую), мы можем настроить эту агрегацию для динамического построения сегментов с интервалом 5 (в случае цены это может представлять 5 долларов).). Когда выполняется агрегирование, поле цены каждого документа будет оценено и будет округлено в меньшую сторону до ближайшей корзины — например, если цена равна 32, а размер корзины равен 5, то округление даст 30, и, таким образом, документ «попадет» в корзину, связанную сключ 30
Мне нужно объединить документы, используя гистограмму даты, без этого округления, поэтому в корзину попадут только документы, у которых дата строго равна ключу корзины.
Например:
{"date": "2016-01-10"}
{"date": "2016-01-11"}
{"date": "2016-01-13"}
{"date": "2016-01-14"}
{
"aggs" : {
"strict" : {
"date_histogram" : {
"field" : "date",
"interval" : "2d"
}
}
}}
Ожидаемый результат:
{
"aggregations": {
"strict": {
"buckets": [
{
"key_as_string": "2016-01-10",
"key": ...,
"doc_count": 1
},
{
"key_as_string": "2016-01-12",
"key": ...,
"doc_count": 0
},
{
"key_as_string": "2016-01-14",
"key": ...,
"doc_count": 1
}
]
}
}}
Комментарии:
1. Затем используйте
day
интервал. Если вы используете2d
, то очевидно, что нечетные дни будут попадать в группы четных дней. Если вам специально необходимо игнорировать нечетные дни, то вы можете применить фильтр для отклонения документов с нечетными датами.2. @Val мой пример довольно прост, просто чтобы показать идею о том, что каждая корзина должна содержать только документы с датой, которая строго равна ключу корзины. Интервал может быть любым, а не только 2 дня.
3. Тогда я не думаю, что
date_histogram
он создан для этого.