Агрегация корреляции корзин
Агрегация конвейера, которая выполняет функцию корреляции на заданной агрегации с множеством корзин.
Параметры
-
buckets_path - (Обязательно, строка) Путь к корзинам, содержащим набор значений для корреляции. Синтаксис см. в
buckets_pathСинтаксис. -
function -
(Обязательно, объект) Функция корреляции для выполнения.
Свойства
function-
count_correlation -
(Обязательно*, объект) Настройка для расчета корреляции подсчёта. Эта функция предназначена для определения корреляции значения термина и заданного метрического показателя. Следовательно, она должна удовлетворять следующим требованиям.
-
buckets_pathдолжен указывать на_countметрику. - Общее количество всех значений подсчёта
bucket_pathдолжно быть меньше или равноindicator.doc_count. - При использовании этой функции необходимо выполнить первоначальное вычисление для сбора необходимых значений
indicator.
Свойства
count_correlation-
indicator -
(Обязательно, объект) Показатель для корреляции с настроенными значениями
bucket_path.Свойства
indicator-
doc_count - (Обязательно, целое число) Общее количество документов, которые первоначально создали
expectations. Оно должно быть больше или равно сумме всех значений вbuckets_path, поскольку это исходный набор данных, с которым коррелируются значения терминов. -
expectations - (Обязательно, массив) Массив чисел, используемых для корреляции с настроенными значениями
bucket_path. Длина этого значения должна всегда соответствовать количеству корзин, возвращенныхbucket_path. -
fractions - (Необязательно, массив) Массив дробей, используемых при усреднении и расчете дисперсии. Это следует использовать, если в предварительно рассчитанных данных и в
buckets_pathесть известные пробелы. Длинаfractions, если она указана, должна равнятьсяexpectations.
-
-
-
Синтаксис
Агрегация bucket_correlation в изоляции выглядит следующим образом:
{
"bucket_correlation": {
"buckets_path": "range_values>_count",
"function": {
"count_correlation": {
"indicator": {
"expectations": [...],
"doc_count": 10000
}
}
}
}
} | Корзины, содержащие значения, с которыми необходимо провести корреляцию. | |
| Определение функции корреляции. |
Пример
Следующий фрагмент коррелирует отдельные термины в поле version с метрикой latency. Не показано предварительное вычисление значений индикатора latency, которое выполнялось с помощью агрегации перцентилей.
В этом примере используются только перцентили 10.
resp = client.search(
index="correlate_latency",
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
}
]
}
},
"bucket_correlation": {
"bucket_correlation": {
"buckets_path": "latency_ranges>_count",
"function": {
"count_correlation": {
"indicator": {
"expectations": [
0,
52.5,
165,
335,
555,
775,
1000,
1225,
1445,
1665,
1775
],
"doc_count": 200
}
}
}
}
}
}
}
},
)
print(resp) const response = await client.search({
index: "correlate_latency",
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,
},
],
},
},
bucket_correlation: {
bucket_correlation: {
buckets_path: "latency_ranges>_count",
function: {
count_correlation: {
indicator: {
expectations: [
0, 52.5, 165, 335, 555, 775, 1000, 1225, 1445, 1665, 1775,
],
doc_count: 200,
},
},
},
},
},
},
},
},
});
console.log(response); 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.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 }
]
}
},
"bucket_correlation": {
"bucket_correlation": {
"buckets_path": "latency_ranges>_count",
"function": {
"count_correlation": {
"indicator": {
"expectations": [0, 52.5, 165, 335, 555, 775, 1000, 1225, 1445, 1665, 1775],
"doc_count": 200
}
}
}
}
}
}
}
}
} | Корзины терминов, содержащие агрегацию диапазонов и агрегацию корреляции корзин. Обе используются для расчета корреляции значений терминов с задержкой. | |
| Агрегация диапазонов для поля задержки. Диапазоны создавались с помощью перцентилей поля задержки. | |
| Агрегация корреляции корзин, которая вычисляет корреляцию количества значений терминов в каждом диапазоне и предварительно рассчитанных значений показателя. |
И вот, что может быть ответом:
{
"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
}
]
},
"bucket_correlation" : {
"value" : 0.8402398981360937
}
},
{
"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
}
]
},
"bucket_correlation" : {
"value" : -0.5759855613334943
}
}
]
}
}
}
© 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/8.17/search-aggregations-bucket-correlation-aggregation.html