Агрегация matrix stats
Агрегация matrix_stats — это числовая агрегация, которая вычисляет следующие статистические данные по набору полей документов:
| | Количество выборок на поле, включённых в вычисления. |
| | Среднее значение для каждого поля. |
| | Полевое значение, измеряющее, насколько разбросаны выборки относительно среднего. |
| | Полевое значение, количественно определяющее асимметричное распределение вокруг среднего. |
| | Полевое значение, количественно определяющее форму распределения. |
| | Матрица, количественно описывающая, как изменения в одном поле связаны с другим. |
| | Матрица ковариаций, масштабированная в диапазон от -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 контролирует, какое значение массива будет использоваться для массивов или многозначных полей. Этот параметр может принимать одно из следующих значений:
| | (по умолчанию) Использовать среднее значение всех значений. |
| | Выбрать наименьшее значение. |
| | Выбрать наибольшее значение. |
| | Использовать сумму всех значений. |
| | Использовать медиану всех значений. |
Пропущенные значения
Параметр 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 }
}
}
}
} | Документы без значения в поле |
© 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