2016-01-10 85 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

相關問題