Агрегация по квантилям корзины
Это агрегация конвейера, которая вычисляет квантили по всем корзинам указанного метрического показателя в связанной агрегации. Указанный метрический показатель должен быть числовым, а связанная агрегация должна быть агрегацией с множеством корзин.
Синтаксис
Агрегация percentiles_bucket выглядит следующим образом:
{
"percentiles_bucket": {
"buckets_path": "the_sum"
}
} Таблица 72. percentiles_bucket Параметры
| Имя параметра | Описание | Обязательно | Значение по умолчанию |
|---|---|---|---|
| Путь к корзинам, для которых необходимо найти квантили (см. | Обязательно | |
| Политика, применяемая при обнаружении пробелов в данных (см. Обработка пробелов в данных для получения более подробной информации) | Необязательно |
|
| Формат, применяемый к выходному значению этой агрегации | Необязательно |
|
| Список квантилей для вычисления | Необязательно |
|
| Флаг, который возвращает диапазон в виде хэша вместо массива пар ключ-значение | Необязательно |
|
Следующий фрагмент вычисляет квантили для корзин общей ежемесячной sales:
POST /sales/_search
{
"size": 0,
"aggs": {
"sales_per_month": {
"date_histogram": {
"field": "date",
"calendar_interval": "month"
},
"aggs": {
"sales": {
"sum": {
"field": "price"
}
}
}
},
"percentiles_monthly_sales": {
"percentiles_bucket": {
"buckets_path": "sales_per_month>sales",
"percents": [ 25.0, 50.0, 75.0 ]
}
}
}
} |
| |
|
|
И в ответе может быть следующее:
{
"took": 11,
"timed_out": false,
"_shards": ...,
"hits": ...,
"aggregations": {
"sales_per_month": {
"buckets": [
{
"key_as_string": "2015/01/01 00:00:00",
"key": 1420070400000,
"doc_count": 3,
"sales": {
"value": 550.0
}
},
{
"key_as_string": "2015/02/01 00:00:00",
"key": 1422748800000,
"doc_count": 2,
"sales": {
"value": 60.0
}
},
{
"key_as_string": "2015/03/01 00:00:00",
"key": 1425168000000,
"doc_count": 2,
"sales": {
"value": 375.0
}
}
]
},
"percentiles_monthly_sales": {
"values" : {
"25.0": 375.0,
"50.0": 375.0,
"75.0": 550.0
}
}
}
} Реализация percentiles_bucket
Квантиль корзины возвращает ближайшую точку входных данных, которая не больше, чем запрашиваемая квантиль; она не интерполирует между точками данных.
Квантили вычисляются точно, а не приближенно (в отличие от метрики квантилей). Это означает, что реализация сохраняет отсортированный список данных в памяти для вычисления квантилей, прежде чем удалить данные. Вы можете столкнуться с проблемами с памятью, если попытаетесь рассчитать квантили для миллионов точек данных в одном percentiles_bucket.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-aggregations-pipeline-percentiles-bucket-aggregation.html