У меня есть сценарий, в котором мне нужно создать агрегацию диапазона для эластичного поиска в java для числового поля, но у меня нет диапазона. Мне нужно рассчитать диапазон (минимум и максимум) из существующих документов, а затем передать его в агрегацию диапазона. Как мы можем сделать это ? Это тот случай, когда мы можем комбинировать диапазон, минимальную и максимальную агрегацию?
Агрегация диапазона с минимальной и максимальной агрегацией в java
Ответы (2)
В идеале можно выбрать значение или тип значения/результатов из выходных данных агрегации для повторного использования в другом семействе агрегаций. Это семейство агрегаций называется конвейерной агрегацией https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline.html
Однако агрегация диапазона не является частью агрегации одноуровневого конвейера. Итак, в вашем сценарии вам нужно будет сделать 1-й запрос (с минимальным и максимальным значением в качестве двух метрических агрегаций https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html), чтобы получить минимальное и максимальное значение, а затем повторно используйте данные для второго вызова ES.
Аналогичный вопрос уже задан - Как создать динамический ценовой диапазон фильтровать с помощью elasticsearch
Ссылки в сообщении выше указывают на открытую проблему/функцию, которую многие люди запрашивают у elasticsearch для агрегации диапазонов.