Необходимо разбить результат агрегации на определенное количество сегментов, размер интервала неизвестен - PullRequest
0 голосов
/ 29 мая 2019

Elasticsearch имеет агрегацию, называемую гистограммой.Он создаст массив сегментов, которые будут разделены на заранее объявленные интервалы.Если поле имеет значения от 0 до 199 и я установил интервал на 100, тогда будет 2 сегмента: [0, 100), [100, 200).

{
    "aggregations" : {
        "prices" : {
            "histogram" : {
                "field" : "price",
                "interval" : 100
            }
        }
    }
}

Результат:

{
    ...
    "aggregations": {
        "prices" : {
            "buckets": [
                {
                    "key": 0.0,
                    "doc_count": 1
                },
                {
                    "key": 100.0,
                    "doc_count": 1
                }
            ]
        }
    }
}

Но проблема в том, чтобы разделить результат, например, на 10 равных сегментов.Размер интервала будет зависеть от минимальных и максимальных значений, которые заранее неизвестны.Самый простой вариант, который я пытаюсь реализовать: я получаю минимальное и максимальное значения в первом запросе.Затем я получаю размер интервала: (максимальное значение - минимальное значение) / 10. Затем со вторым запросом я могу указать рассчитанный интервал и получить ровно 10 сегментов.Но я хотел бы получить все данные в одном запросе, если это возможно.Кроме того, я не хотел бы получать ошибку, когда интервал меньше 10, то есть минимальная сумма меньше максимальной, чем размер требуемых сегментов.Буду признателен, если кто-то поможет в решении проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...