ES如何在内部实施指标聚合?
假设索引中的文档具有以下结构:
{
category: A,
measure: 20
}
对于下面的查询,它会对类别进行术语聚合并计算总和(度量),'衡量'字段值
查询:
{
size: 0,
aggs: {
cat_aggs: {
terms: {
field: 'category'
},
aggs: {
sumAgg: {
sum: {field: 'measure'}
}
}
}
}
}
答案 0 :(得分:0)
来自metrics aggregations的官方文件(重点补充):
此系列中的聚合基于从正在聚合的文档中以某种方式提取的值来计算度量标准。这些值通常是从文档的字段中提取的(使用字段数据),但也可以使用脚本生成。
如果您使用较新的ES 2.x版本,则doc_values
已成为字段数据的标准。
默认情况下,所有支持doc值的字段都会启用。如果您确定不需要对某个字段进行排序或聚合,或者从脚本中访问字段值,则可以禁用doc值以节省磁盘空间
因此,为了清楚地回答您的问题,度量标准聚合是根据在索引时存储的字段数据或doc值计算的,即不是基于查询时的源解析计算的,除非您从访问的脚本执行此操作直接_source
。