【问题标题】:ElasticSearch: Metric aggregation and doc values / field-dataElasticSearch:指标聚合和文档值/字段数据
【发布时间】:2016-04-14 17:31:03
【问题描述】:

ES 内部如何实现度量聚合?

假设索引中的文档具有以下结构:

{
  category: A,
  measure: 20
}

对于下面的查询,它对类别进行术语聚合并计算总和(度量),即“度量”字段值

  • 从文档中提取(即_source)并求和或
  • 是否会从“测量”字段的文档值/字段数据中获取值

查询:

{
  size: 0,
  aggs: {
     cat_aggs: {
       terms: {
          field: 'category'
       },
       aggs: {
          sumAgg: {
             sum: {field: 'measure'}
          }
       }
    }

  }
}

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    来自metrics aggregations 上的官方文档(强调添加):

    此系列中的聚合计算指标基于以一种或另一种方式从正在聚合的文档中提取的值。这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成

    如果您使用的是较新的 ES 2.x 版本,那么doc_values 已成为字段数据的标准。

    所有支持 doc 值的字段都默认启用它们。如果您确定不需要对字段进行排序或聚合,或从脚本访问字段值,则可以禁用 doc 值以节省磁盘空间

    因此,为了清楚地回答您的问题,指标聚合是根据在索引时存储的字段数据或文档值计算的,即不是根据查询时的源解析计算的,除非您从访问的脚本中执行此操作直接_source

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2022-01-14
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2020-02-18
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多