Агрегация корреляции теста K-S для подсчета бакетов
Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA.
Агрегация конвейера, которая выполняет двухвыборочный тест Колмогорова–Смирнова (далее «тест K-S») по отношению к предоставленному распределению и распределению, подразумеваемому подсчетом документов в конфигурированной агрегации-сиблинге. В частности, для некоторого метрического показателя, предполагая, что интервалы перцентилей метрического показателя известны заранее или были вычислены агрегацией, можно использовать агрегацию диапазона для сиблинга, чтобы вычислить значение p различия распределения между метрическим показателем и ограничением этого метрического показателя на подмножество документов. Естественным случаем использования является тот случай, когда агрегация сиблинга range aggregation вложена в агрегацию terms aggregation, в этом случае сравнивается общее распределение метрического показателя с его ограничением на каждый терм.
Параметры
-
buckets_path - (Обязательный, строка) Путь к бакетам, содержащим набор значений для корреляции. Должен быть
_countпутем. Для синтаксиса см.buckets_pathСинтаксис. -
alternative - (Необязательный, список) Список строковых значений, указывающих, какой вариант теста K-S вычислить. Допустимые значения: «greater», «less», «two_sided». Этот параметр важен для определения статистики K-S, используемой при вычислении теста K-S. Значение по умолчанию — все возможные альтернативные гипотезы.
-
fractions - (Необязательный, список) Список чисел с плавающей точкой, указывающий распределение выборок для сравнения с результатами
buckets_path. В типичном использовании это общая пропорция документов в каждом бакете, которая сравнивается с фактической пропорцией документов в каждом бакете из подсчета документов в агрегации сиблинга. По умолчанию предполагается, что общие документы равномерно распределены по этим бакетам, что они будут, если использовать равные перцентили метрики для определения конечных точек бакетов. -
sampling_method - (Необязательный, строка) Указывает методологию выборки при вычислении теста K-S. Обратите внимание, что это выборка возвращаемых значений. Это определяет точки кумулятивной функции распределения (CDF) для сравнения двух выборок. Значение по умолчанию —
upper_tail, что подчеркивает верхний конец точек CDF. Допустимые варианты:upper_tail,uniformиlower_tail.
Синтаксис
Агрегация bucket_count_ks_test выглядит следующим образом:
{
"bucket_count_ks_test": {
"buckets_path": "range_values>_count",
"alternative": ["less", "greater", "two_sided"],
"sampling_method": "upper_tail"
}
} | Бакиты, содержащие значения, по которым нужно провести тест. | |
| Альтернативы для вычисления. | |
| Метод выборки для статистики K-S. |
Пример
Следующий фрагмент выполняет bucket_count_ks_test по отдельным значениям в поле version относительно равномерного распределения. Равномерное распределение отражает latency перцентильные бакиты. Не показано предварительное вычисление значений индикатора latency, которое было выполнено с использованием агрегации перцентилей.
В этом примере используются только децили latency.
POST correlate_latency/_search?size=0&filter_path=aggregations
{
"aggs": {
"buckets": {
"terms": {
"field": "version",
"size": 2
},
"aggs": {
"latency_ranges": {
"range": {
"field": "latency",
"ranges": [
{ "to": 0 },
{ "from": 0, "to": 105 },
{ "from": 105, "to": 225 },
{ "from": 225, "to": 445 },
{ "from": 445, "to": 665 },
{ "from": 665, "to": 885 },
{ "from": 885, "to": 1115 },
{ "from": 1115, "to": 1335 },
{ "from": 1335, "to": 1555 },
{ "from": 1555, "to": 1775 },
{ "from": 1775 }
]
}
},
"ks_test": {
"bucket_count_ks_test": {
"buckets_path": "latency_ranges>_count",
"alternative": ["less", "greater", "two_sided"]
}
}
}
}
}
} | Бакиты значений по отдельным терминам, содержащие агрегацию диапазона и агрегацию корреляции бакетов. Оба используются для вычисления корреляции значений терминов с задержкой. | |
| Агрегация диапазона для поля задержки. Диапазоны были созданы, ссылаясь на перцентили поля задержки. | |
| Агрегация подсчета бакетов теста K-S, которая проверяет, происходят ли подсчеты бакетов из одного и того же распределения, что и |
И вот, возможно, ответ:
{
"aggregations" : {
"buckets" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "1.0",
"doc_count" : 100,
"latency_ranges" : {
"buckets" : [
{
"key" : "*-0.0",
"to" : 0.0,
"doc_count" : 0
},
{
"key" : "0.0-105.0",
"from" : 0.0,
"to" : 105.0,
"doc_count" : 1
},
{
"key" : "105.0-225.0",
"from" : 105.0,
"to" : 225.0,
"doc_count" : 9
},
{
"key" : "225.0-445.0",
"from" : 225.0,
"to" : 445.0,
"doc_count" : 0
},
{
"key" : "445.0-665.0",
"from" : 445.0,
"to" : 665.0,
"doc_count" : 0
},
{
"key" : "665.0-885.0",
"from" : 665.0,
"to" : 885.0,
"doc_count" : 0
},
{
"key" : "885.0-1115.0",
"from" : 885.0,
"to" : 1115.0,
"doc_count" : 10
},
{
"key" : "1115.0-1335.0",
"from" : 1115.0,
"to" : 1335.0,
"doc_count" : 20
},
{
"key" : "1335.0-1555.0",
"from" : 1335.0,
"to" : 1555.0,
"doc_count" : 20
},
{
"key" : "1555.0-1775.0",
"from" : 1555.0,
"to" : 1775.0,
"doc_count" : 20
},
{
"key" : "1775.0-*",
"from" : 1775.0,
"doc_count" : 20
}
]
},
"ks_test" : {
"less" : 2.248673241788478E-4,
"greater" : 1.0,
"two_sided" : 5.791639181800257E-4
}
},
{
"key" : "2.0",
"doc_count" : 100,
"latency_ranges" : {
"buckets" : [
{
"key" : "*-0.0",
"to" : 0.0,
"doc_count" : 0
},
{
"key" : "0.0-105.0",
"from" : 0.0,
"to" : 105.0,
"doc_count" : 19
},
{
"key" : "105.0-225.0",
"from" : 105.0,
"to" : 225.0,
"doc_count" : 11
},
{
"key" : "225.0-445.0",
"from" : 225.0,
"to" : 445.0,
"doc_count" : 20
},
{
"key" : "445.0-665.0",
"from" : 445.0,
"to" : 665.0,
"doc_count" : 20
},
{
"key" : "665.0-885.0",
"from" : 665.0,
"to" : 885.0,
"doc_count" : 20
},
{
"key" : "885.0-1115.0",
"from" : 885.0,
"to" : 1115.0,
"doc_count" : 10
},
{
"key" : "1115.0-1335.0",
"from" : 1115.0,
"to" : 1335.0,
"doc_count" : 0
},
{
"key" : "1335.0-1555.0",
"from" : 1335.0,
"to" : 1555.0,
"doc_count" : 0
},
{
"key" : "1555.0-1775.0",
"from" : 1555.0,
"to" : 1775.0,
"doc_count" : 0
},
{
"key" : "1775.0-*",
"from" : 1775.0,
"doc_count" : 0
}
]
},
"ks_test" : {
"less" : 0.9642895789647244,
"greater" : 4.58718174664754E-9,
"two_sided" : 5.916656831139733E-9
}
}
]
}
}
}
© 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-bucket-count-ks-test-aggregation.html