Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Агрегации ›Агрегации конвейера

Агрегация корреляции корзин

Агрегация конвейера, которая выполняет функцию корреляции на заданной агрегации с множеством корзин.

Параметры

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API