2016-01-10 48 views
1

ES如何在内部实现度量标准聚合?在索引ElasticSearch:度量标准聚合和文档值/字段数据

假设文件有以下结构:

{ 
    category: A, 
    measure: 20 
} 

将用于下面的查询,其确实在类别术语聚集和计算总和(测量)中,“测量”字段值

  • 从文档中提取(即_source)并求和或者
  • 将值从'度量'字段的doc值/字段数据中取出

查询:

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

    } 
} 

回答

0

从官方文档上metrics aggregations(强调):

基于从在文档或那种方式提取的值这个家庭计算指标的汇总被汇总。这些值通常从文档的字段中提取(使用字段数据),但也可以使用的脚本生成

如果您使用的是较新的ES 2.x版本,则doc_values已成为现场数据的标准。

默认情况下,所有支持文档值的字段都已启用。如果你确信你不需要进行排序或聚集在现场,或从脚本访问该字段的值,你可以禁用DOC值,以节省磁盘空间

所以回答你问题很清楚,指标聚合是根据字段数据或在索引时存储的doc值计算出来的,也就是说,除非您是通过直接访问_source的脚本执行此操作,否则不会根据查询时的源语法分析来计算。

+0

它有助于清除你的疑惑吗? – Val

相关问题