ES 筆記四十一:聚合的精準度問題

CrazyZard發表於2020-01-03

ES筆記四十一:聚合的精準度問題

ES筆記四十一:聚合的精準度問題

  • 在Terms Aggregation的返回中有兩個特殊的數值
    • doc_count_error_upper_bound:被遺漏的term分桶,包含的文件,有可能的最大值
    • sum_other_doc_count:處理返回結果bucket的terms以外,其他terms的文件總數(總數-返回的總數)
      ES 筆記四十一:聚合的精準度問題

ES筆記四十一:聚合的精準度問題

ES筆記四十一:聚合的精準度問題

  • Terms 聚合分析不準的原因,資料分散在多個分片上,Coordinating Node 無法獲取資料全貌
  • 解決方案1:當資料量不大時,設定Primary Shard 為1;實現準確性
  • 解決方案2:在分散式資料上,設定shard_size 引數,提高精確度
    • 原理:每次從Shard 上額外多獲取資料,提升準確率

ES 筆記四十一:聚合的精準度問題

ES筆記四十一:聚合的精準度問題

  • 調整 shard size 大小,降低 doc_count_error_upper_bound 來提升準確度
    • 增加整體計算量,提高了準確率,但會降低相應時間
  • Shard Size 預設大小設定
    • shard size = size * 1.5 +10
      GET kibana_sample_data_flights/_search
      {
      "size": 0,
      "aggs": {
      "weather": {
        "terms": {
          "field":"OriginWeather",
          "size":5,
          "show_term_doc_count_error":true
        }
      }
      }
      }
      GET my_flights/_search
      {
      "size": 0,
      "aggs": {
      "weather": {
        "terms": {
          "field":"OriginWeather",
          "size":1,
          "shard_size":1,
          "show_term_doc_count_error":true
        }
      }
      }
      }

      https://www.elastic.co/guide/en/elasticsea...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

快樂就是解決一個又一個的問題!

相關文章