Агрегация matrix stats
Агрегация matrix_stats — это числовая агрегация, которая вычисляет следующие статистические данные по набору полей документов:
| | Количество выборок на поле, включённых в вычисление. |
| | Среднее значение для каждого поля. |
| | Полевое измерение разброса выборок относительно среднего значения. |
| | Полевое измерение, количественно описывающее асимметричное распределение вокруг среднего значения. |
| | Полевое измерение, количественно описывающее форму распределения. |
| | Матрица, количественно описывающая, как изменения одного поля связаны с другим. |
| | Матрица ковариаций, масштабированная в диапазоне от -1 до 1 включительно. Описывает взаимосвязь между распределениями полей. |
В отличие от других метрических агрегаций, агрегация matrix_stats не поддерживает скрипты.
Следующий пример демонстрирует использование matrix stats для описания взаимосвязи между доходом и бедностью.
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 управляет тем, какое значение массива будет использоваться для массивов или многозначных полей. Этот параметр может принимать одно из следующих значений:
| | (по умолчанию) Использует среднее арифметическое всех значений. |
| | Выбирает наименьшее значение. |
| | Выбирает наибольшее значение. |
| | Использует сумму всех значений. |
| | Использует медиану всех значений. |
Пропущенные значения
Параметр missing определяет, как должны обрабатываться документы, у которых отсутствует значение. По умолчанию они игнорируются, но также можно обработать их так, как будто у них есть значение. Для этого добавьте набор сопоставлений "имя_поля": "значение" для указания значений по умолчанию для каждого поля.
GET /_search
{
"aggs": {
"matrixstats": {
"matrix_stats": {
"fields": [ "poverty", "income" ],
"missing": { "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/7.17/search-aggregations-matrix-stats-aggregation.html