Elasticsearch 之 Metrics Aggregations(数值度量聚合)

本文详细介绍了Elasticsearch中的数值度量聚合,包括加权均值、基数聚合、最大值与最小值、百分比聚合等,并探讨了各种聚合的配置参数及其应用场景,帮助理解如何利用这些聚合进行数据统计分析。
摘要由CSDN通过智能技术生成

Metrics Aggregations(数值度量聚合)

该系列中的聚合基于以某种方式从正在聚合的文档中提取的值来计算度量。这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成。

数值度量聚合是一种输出数值的特殊类型的度量聚合。一些聚合输出单个数值度量(例如平均值),称为单值度量聚合,另一些输出多个度量值(例如统计数据),称为多值数值度量聚合。单值与多值数值度量聚合的区别是,他们充当某些桶聚合(比如某些桶聚合可以基于每个桶的数值度量对返回的桶进行排序)的直接子聚合时发挥了不同的作用。

avg aggregation(single-value)

均值聚合–基于文档中的某个字段,计算该值在聚合文档中的均值。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。

假设数据由学生考试成绩(介于0到100之间)的文档组成,我们可以用以下方法对他们的分数进行平均:

POST /exams/_search?size=0
{
   
    "aggs" : {
   
        "avg_grade" : {
    "avg" : {
    "field" : "grade" } }
    }
}
// 输出
{
   
    ...
    "aggregations": {
   
        "avg_grade": {
   
            "value": 75.0
        }
    }
}
  • 配置参数
    基于脚本计算平均成绩
POST /exams/_search?size=0
{
   
    "aggs" : {
   
        "avg_grade" : {
   
            "avg" : {
   
                "script" : {
   
                    "source" : "doc.grade.value"
                }
            }
        }
    }
}
  • value script

假如这次考试难度超过了学生的平均水平,需要对成绩进行修正。可以通过如下方式获取新的均值:

POST /exams/_search?size=0
{
   
    "aggs" : {
   
        "avg_corrected_grade" : {
   
            "avg" : {
   
                "field" : "grade",
                "script" : {
   
                    "lang": "painless",
                    "source": "_value * params.correction",
                    "params" : {
   
                        "correction" : 1.2
                    }
                }
            }
        }
    }
}
  • Missing value

missing 参数定义了在文档值缺失情况下的处理方式。默认情况下它们会被忽略,但是也可以认为有某个特定的值。

POST /exams/_search?size=0
{
   
    "aggs" : {
   
        "grade_avg" : {
   
            "avg" : {
   
                "field" : "grade",
                "missing": 10 
            }
        }
    }
}

加权均值聚合

用公式可以描述为 ∑(value * weight) / ∑(weight)

一般说的均值可以认为是的具有隐式权重为一的加权平均值。

权重均值参数
参数名称 描述 是否需要默认值
value 提供值的字段或脚本的配置 必需
weight 提供权重的字段或脚本的配置 必需
format 响应数字格式 可选
value_type 纯脚本或未映射字段的值的提示 可选
示例

文档中有一个 grade 字段,值为 0-100,以及一个 weight 字段保存了数字类型的权重,可以通过如下方式计算权重平均值:

POST /exams/_search
{
   
    "size": 0,
    "aggs" : {
   
        "weighted_grade": {
   
            "weighted_avg": {
   
                "value"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值