1. 程式人生 > >elasticsearch(6)聚合統計-度量聚合

elasticsearch(6)聚合統計-度量聚合

平均值聚合

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_avg": {
      "avg": {
        "field": "field1"
      }
    }
  }
}

對於缺失統計欄位的資料,預設情況下聚合時會被忽略。可以通過設定missing引數,給缺失統計欄位的資料一個預設值進行聚合統計。

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_avg": {
      "stats": {
        "field": "field1",
        "missing": 0
      }
    }
  }
}

基數聚合

統計某欄位唯一值得個數,相當於SQL中的SELECT COUNT(DISTINCT field1) FROM xxx

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_cardinality": {
      "cardinality": {
        "field": "field1"
      }
    }
  }
}

對於缺失統計欄位的資料,預設情況下聚合時會被忽略。可以通過設定missing引數,給缺失統計欄位的資料一個預設值進行聚合統計。

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_cardinality": {
      "cardinality": {
        "field": "field1",
        "missing": "N/A"
      }
    }
  }
}

基數聚合的值並不是一個絕對的準確值,而是一個近似計數。由於es統計到高基數集時需要佔用大量的記憶體,且各個節點之間的溝通也會佔用大量的叢集資源,因此效率較低。引數precision_threshold允許es為了基數統計的準確性而設定交換記憶體,實際的基數統計值低於precision_threshold則基數將接近準確,高於該值計數會更模糊,最大值為40000,預設值為3000。

最大值聚合

GET /index/type/_search
{
  "size": 0,
  "aggs": {
    "test_max": {
      "max": {
        "field": "field1"
      }
    }
  }
}

最小值聚合

GET /index/type/_search
{
  "size": 0,
  "aggs": {
    "test_min": {
      "min": {
        "field": "field1"
      }
    }
  }
}

和聚合

GET /index/type/_search
{
  "size": 0,
  "aggs": {
    "test_sum": {
      "sum": {
        "field": "field1"
      }
    }
  }
}

值計數聚合

值計數聚合對聚合文件中提取的值進行計數,通常該聚合與其他單值聚合一起使用,例如計算平均聚合時,統計有多少個值參與了平均聚合。

GET /index/type/_search
{
  "size": 0,
  "aggs": {
    "test_avg": {
      "avg": {
        "field": "field1"
      }
    },
    "test_value_count": {
      "value_count": {
        "field": "field1"
      }
    }
  }
}

統計聚合

統計聚合是多個單值聚合的彙總,包含:最小值、最大值、和、計數、平均值。

GET /index/type/_search
{
  "size": 0,
  "aggs": {
    "test_stats": {
      "stats": {
        "field": "field1"
      }
    }
  }
}

百分比聚合

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_percentiles": {
      "percentiles": {
        "field": "field1"
      }
    }
  }
}

預設情況下,百分比指標會計算一系列百分比:1、5、25、50、75、95、99,也可以自定義需要計算的百分比。

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_percentiles": {
      "percentiles": {
        "field": "price",
        "percents": [
          1,
          5,
          25,
          50,
          75,
          95,
          99
        ]
      }
    }
  }
}

百分比分級聚合

計算測試值低於指定值得百分比。

GET /index/type/_search
{
  "size": 0, 
  "aggs": {
    "test_percentile_ranks": {
      "percentile_ranks": {
        "field": "field1",
        "values": [
          10,
          20
        ]
      }
    }
  }
}