Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Агрегации ›Метрические агрегации

Агрегация matrix stats

Агрегация matrix_stats — это числовая агрегация, которая вычисляет следующие статистические данные по набору полей документов:

count

Количество выборок на поле, включённых в вычисления.

mean

Среднее значение для каждого поля.

variance

Полевое значение, измеряющее, насколько разбросаны выборки относительно среднего.

skewness

Полевое значение, количественно определяющее асимметричное распределение вокруг среднего.

kurtosis

Полевое значение, количественно определяющее форму распределения.

covariance

Матрица, количественно описывающая, как изменения в одном поле связаны с другим.

correlation

Матрица ковариаций, масштабированная в диапазон от -1 до 1 включительно. Описывает взаимосвязь между распределениями полей.

В отличие от других метрических агрегаций, агрегация matrix_stats не поддерживает скрипты.

Следующий пример демонстрирует использование matrix stats для описания взаимосвязи между доходом и бедностью.

resp = client.search(
    aggs={
        "statistics": {
            "matrix_stats": {
                "fields": [
                    "poverty",
                    "income"
                ]
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    aggregations: {
      statistics: {
        matrix_stats: {
          fields: [
            'poverty',
            'income'
          ]
        }
      }
    }
  }
)
puts response
const response = await client.search({
  aggs: {
    statistics: {
      matrix_stats: {
        fields: ["poverty", "income"],
      },
    },
  },
});
console.log(response);
GET /_search
{
  "aggs": {
    "statistics": {
      "matrix_stats": {
        "fields": [ "poverty", "income" ]
      }
    }
  }
}

Тип агрегации — matrix_stats, а настройка fields определяет набор полей (в виде массива) для вычисления статистических данных. Вышеупомянутый запрос возвращает следующий ответ:

{
  ...
  "aggregations": {
    "statistics": {
      "doc_count": 50,
      "fields": [ {
          "name": "income",
          "count": 50,
          "mean": 51985.1,
          "variance": 7.383377037755103E7,
          "skewness": 0.5595114003506483,
          "kurtosis": 2.5692365287787124,
          "covariance": {
            "income": 7.383377037755103E7,
            "poverty": -21093.65836734694
          },
          "correlation": {
            "income": 1.0,
            "poverty": -0.8352655256272504
          }
        }, {
          "name": "poverty",
          "count": 50,
          "mean": 12.732000000000001,
          "variance": 8.637730612244896,
          "skewness": 0.4516049811903419,
          "kurtosis": 2.8615929677997767,
          "covariance": {
            "income": -21093.65836734694,
            "poverty": 8.637730612244896
          },
          "correlation": {
            "income": -0.8352655256272504,
            "poverty": 1.0
          }
        } ]
    }
  }
}

Поле doc_count указывает количество документов, участвующих в вычислении статистических данных.

Поля с несколькими значениями

Агрегация matrix_stats обрабатывает каждое поле документа как независимую выборку. Параметр mode контролирует, какое значение массива будет использоваться для массивов или многозначных полей. Этот параметр может принимать одно из следующих значений:

avg

(по умолчанию) Использовать среднее значение всех значений.

min

Выбрать наименьшее значение.

max

Выбрать наибольшее значение.

sum

Использовать сумму всех значений.

median

Использовать медиану всех значений.

Пропущенные значения

Параметр missing определяет, как должны обрабатываться документы, у которых отсутствует значение. По умолчанию они игнорируются, но также можно обработать их как если бы у них было значение. Это делается путем добавления набора сопоставлений "имя_поля: значение" для задания значений по умолчанию для каждого поля.

resp = client.search(
    aggs={
        "matrixstats": {
            "matrix_stats": {
                "fields": [
                    "poverty",
                    "income"
                ],
                "missing": {
                    "income": 50000
                }
            }
        }
    },
)
print(resp)
const response = await client.search({
  aggs: {
    matrixstats: {
      matrix_stats: {
        fields: ["poverty", "income"],
        missing: {
          income: 50000,
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "aggs": {
    "matrixstats": {
      "matrix_stats": {
        "fields": [ "poverty", "income" ],
        "missing": { "income": 50000 }      
      }
    }
  }
}

Документы без значения в поле income будут иметь значение по умолчанию 50000.

© 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-matrix-stats-aggregation.html

Spec-Zone.ru

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