矩阵统计聚合
编辑矩阵统计聚合
编辑matrix_stats
聚合是一种数值聚合,用于计算一组文档字段的以下统计信息:
|
每个字段计算中包含的样本数量。 |
|
每个字段的平均值。 |
|
每个字段的度量,表示样本与均值的离散程度。 |
|
每个字段的度量,量化均值周围的不对称分布。 |
|
每个字段的度量,量化分布的形状。 |
|
一个矩阵,定量描述一个字段的变化如何与另一个字段关联。 |
|
协方差矩阵缩放到 -1 到 1(包括)的范围。描述字段分布之间的关系。 |
与其他指标聚合不同,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
参数定义如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值。这可以通过添加一组 fieldname : value 映射来指定每个字段的默认值来实现。
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);