矩阵统计(matrix_stats)

matrix_stats聚合是一种数值聚合,它对一组文档字段计算以下统计信息:

count

计算中包含的每字段样本数。

mean

每个字段的平均值。

variance

(方差,离散)每个字段的测量对样本平均值的分布情况。 (原文: Per field Measurement for how spread out the samples are from the mean.

skewness

(偏度)每个字段的测量量化平均值周围的不对称分布。

kurtosis

(峰态)对分布形状进行量化的字段测量。 (原文: Per field measurement quantifying the shape of the distribution.

covariance

(协方差)定量描述一个领域中的变化如何与另一个领域相关联的矩阵。

correlation

协方差(covariance)矩阵限定在-1到1(包括-1和1)范围内。 描述字段分布之间的关系。

下面的例子演示了如何使用矩阵统计来描述收入和贫困之间的关系。

GET /_search
{
    "aggs": {
        "statistics": {
            "matrix_stats": {
                "fields": ["poverty", "income"]
            }
        }
    }
}

聚合类型是matrix_statsfields设置定义了用于计算统计数据的一组字段(数组格式)。 上述请求返回以下响应:

{
    ...
    "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定义应该如何处理有缺失值的文档。 默认情况下,它们将被忽略,但也可以将它们视为有一个值。 这是通过添加一组 fieldname : value 映射来指定每个字段的默认值来实现的。

GET /_search
{
    "aggs": {
        "matrixstats": {
            "matrix_stats": {
                "fields": ["poverty", "income"],
                "missing": {"income" : 50000} 
            }
        }
    }
}

字段income中没有值的文档将使用默认值50000

脚本

此聚合系列尚不支持脚本。