Агрегация скользящих перцентилей
Учитывая упорядоченный ряд перцентилей, агрегация скользящих перцентилей будет сдвигать окно по этим перцентилям и позволит пользователю вычислить кумулятивную перцентиль.
По концепции это очень похоже на агрегацию конвейера скользящей функции, за исключением того, что она работает с набросками перцентилей, а не с фактическими значениями бакетов.
Синтаксис
Агрегация moving_percentiles в изоляции выглядит так:
{
"moving_percentiles": {
"buckets_path": "the_percentile",
"window": 10
}
} Таблица 70. moving_percentiles Параметры
| Имя параметра | Описание | Обязательно | Значение по умолчанию |
|---|---|---|---|
| Путь к интересующей перцентили (см. | Обязательно | |
| Размер окна для «сдвига» по гистограмме. | Обязательно | |
| Смещение положения окна. | Необязательно | 0 |
Агрегации moving_percentiles должны быть встроены внутри агрегации histogram или date_histogram. Они могут быть встроены как любая другая метрическая агрегация:
POST /_search
{
"size": 0,
"aggs": {
"my_date_histo": {
"date_histogram": {
"field": "date",
"calendar_interval": "1M"
},
"aggs": {
"the_percentile": {
"percentiles": {
"field": "price",
"percents": [ 1.0, 99.0 ]
}
},
"the_movperc": {
"moving_percentiles": {
"buckets_path": "the_percentile",
"window": 10
}
}
}
}
}
} | Строится агрегация | |
| Используется метрика | |
| Наконец, указывается агрегация |
Скользящие перцентили создаются сначала с помощью histogram или date_histogram по полю. Затем добавляется метрика перцентиля внутри этой гистограммы. И, наконец, агрегация moving_percentiles встраивается внутри гистограммы. Параметр buckets_path затем используется для указания на агрегацию перцентилей внутри гистограммы (см. buckets_path Синтаксис для описания синтаксиса buckets_path).
И вот возможный ответ:
{
"took": 11,
"timed_out": false,
"_shards": ...,
"hits": ...,
"aggregations": {
"my_date_histo": {
"buckets": [
{
"key_as_string": "2015/01/01 00:00:00",
"key": 1420070400000,
"doc_count": 3,
"the_percentile": {
"values": {
"1.0": 150.0,
"99.0": 200.0
}
}
},
{
"key_as_string": "2015/02/01 00:00:00",
"key": 1422748800000,
"doc_count": 2,
"the_percentile": {
"values": {
"1.0": 10.0,
"99.0": 50.0
}
},
"the_movperc": {
"values": {
"1.0": 150.0,
"99.0": 200.0
}
}
},
{
"key_as_string": "2015/03/01 00:00:00",
"key": 1425168000000,
"doc_count": 2,
"the_percentile": {
"values": {
"1.0": 175.0,
"99.0": 200.0
}
},
"the_movperc": {
"values": {
"1.0": 10.0,
"99.0": 200.0
}
}
}
]
}
}
} Формат вывода агрегации moving_percentiles унаследован от формата агрегации percentiles.
Агрегации конвейера скользящих перцентилей всегда выполняются с политикой разрыва skip.
Параметр shift
По умолчанию (с shift = 0), окно, предлагаемое для расчета, представляет собой последние n значения, исключая текущий бакет. Увеличение значения shift на 1 сдвигает начальное положение окна на 1 вправо.
- Для включения текущего бакета в окно используйте
shift = 1. - Для выравнивания по центру (
n / 2значений перед и после текущего бакета) используйтеshift = window / 2. - Для выравнивания по правому краю (
nзначений после текущего бакета) используйтеshift = window.
Если какое-либо из краев окна выходит за пределы диапазона данных, окно сужается, чтобы включить только доступные значения.
© 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-moving-percentiles-aggregation.html