Агрегации в Elasticsearch: сегментное агрегирование

Агрегаты сегментов (bucket aggregations) не вычисляют метрики по полям, как агрегаты метрик, а вместо этого создают сегменты документов. Каждый сегмент связан с критерием (в зависимости от типа агрегирования), который определяет, "попадает" ли в него документ в текущем контексте. Другими словами, сегменты эффективно определяют наборы документов. Помимо самих сегментов агрегаты сегментов также вычисляют и возвращают количество документов, которые "попали" в каждый сегмент.

Агрегаты сегментов, в отличие от агрегатов метрик, могут содержать субагрегации. Эти субагрегации будут объединены для сегментов, созданных их "родительской" агрегацией сегментов.

Существуют разные агрегаторы сегментов, у каждого из которых своя стратегия "сегментирования". Некоторые определяют один сегмент, некоторые определяют фиксированное количество нескольких сегментов, а третьи динамически создают сегменты в процессе агрегации.

Максимальное количество сегментов, разрешенное в одном ответе, ограничено параметром динамического кластера search.max_buckets. По умолчанию 65536. Запросы, которые пытаются вернуть больше лимита, завершатся ошибкой с исключением.


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Нормальные формы, пример нормализации в базе данных

Хэш-таблица: разрешение коллизий