矩阵统计聚合
编辑矩阵统计聚合
编辑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
参数定义如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值。这是通过添加一组字段名:值映射来为每个字段指定默认值来实现的。
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);