Агрегирование extended stats
Агрегирование метрик, вычисляющее статистические данные по числовым значениям, извлечённым из агрегированных документов.
Данное агрегирование является расширенной версией агрегирования stats, где добавлены дополнительные метрики, такие как sum_of_squares, variance, std_deviation и std_deviation_bounds.
Предположим, данные представляют собой документы с оценками за экзамен (от 0 до 100) студентов
GET /exams/_search
{
"size": 0,
"aggs": {
"grades_stats": { "extended_stats": { "field": "grade" } }
}
} Вышеуказанное агрегирование вычисляет статистику оценок по всем документам. Тип агрегирования — extended_stats, а параметр field определяет числовое поле документов, по которому будут вычисляться статистические данные. Результат будет следующим:
std_deviation и variance вычисляются как популяционные метрики, поэтому они всегда будут совпадать с std_deviation_population и variance_population соответственно.
{
...
"aggregations": {
"grades_stats": {
"count": 2,
"min": 50.0,
"max": 100.0,
"avg": 75.0,
"sum": 150.0,
"sum_of_squares": 12500.0,
"variance": 625.0,
"variance_population": 625.0,
"variance_sampling": 1250.0,
"std_deviation": 25.0,
"std_deviation_population": 25.0,
"std_deviation_sampling": 35.35533905932738,
"std_deviation_bounds": {
"upper": 125.0,
"lower": 25.0,
"upper_population": 125.0,
"lower_population": 25.0,
"upper_sampling": 145.71067811865476,
"lower_sampling": 4.289321881345245
}
}
}
} Имя агрегирования (grades_stats выше) также используется в качестве ключа для получения результата агрегирования из возвращённого ответа.
Границы стандартного отклонения
По умолчанию метрика extended_stats вернёт объект, называемый std_deviation_bounds, который предоставляет интервал плюс/минус два стандартных отклонения от среднего значения. Это может быть полезным способом визуализации дисперсии данных. Если вам требуется другой предел, например, три стандартных отклонения, можно установить значение sigma в запросе:
GET /exams/_search
{
"size": 0,
"aggs": {
"grades_stats": {
"extended_stats": {
"field": "grade",
"sigma": 3
}
}
}
} |
|
sigma может быть любым неотрицательным числом с плавающей точкой, что означает, что вы можете запросить нецелочисленные значения, такие как 1.5. Значение 0 допустимо, но просто вернёт среднее значение для обоих границ upper и lower.
Границы upper и lower вычисляются как популяционные метрики, поэтому они всегда будут совпадать с upper_population и lower_population соответственно.
Стандартное отклонение и границы требуют нормальности
Стандартное отклонение и его границы отображаются по умолчанию, но они не всегда применимы ко всем наборам данных. Для того, чтобы метрики имели смысл, данные должны быть нормально распределены. Статистические методы, используемые для стандартного отклонения, предполагают нормально распределённые данные, поэтому если ваши данные сильно смещены влево или вправо, полученное значение будет вводящим в заблуждение.
Скрипт
Если вам нужно агрегировать значение, которое не индексируется, используйте runtime-поле. Предположим, что оценки, с которыми мы работаем, относятся к экзамену, который был сложнее, чем предполагалось, и мы хотим их скорректировать:
GET /exams/_search
{
"size": 0,
"runtime_mappings": {
"grade.corrected": {
"type": "double",
"script": {
"source": "emit(Math.min(100, doc['grade'].value * params.correction))",
"params": {
"correction": 1.2
}
}
}
},
"aggs": {
"grades_stats": {
"extended_stats": { "field": "grade.corrected" }
}
}
} Пропущенное значение
Параметр missing определяет, как должны обрабатываться документы, в которых отсутствует значение. По умолчанию они игнорируются, но также можно рассматривать их как имеющие значение.
GET /exams/_search
{
"size": 0,
"aggs": {
"grades_stats": {
"extended_stats": {
"field": "grade",
"missing": 0
}
}
}
} | Документы без значения в поле |
© 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-metrics-extendedstats-aggregation.html