Elasticsearch度量聚合

度量聚合


度量聚合会根据某种方法从被聚合的文档中计算度量。度量值通常从文档的字段中提取,但是也可以使用脚本生成。

数字度量聚合是输出数字值的特定度量类型。一些聚合输出单个数字度量(eg:avg),被称为单值数字度量聚合。当聚合充当桶聚合的子聚合时,单值数字度量聚合与多值数字度量聚合的区别便会体现出来。

平均值聚合(指定字段)

/bank/_search?size=0
{
  "aggs": {
    "avg_balance": { "avg": {"field": "balance"} }
  }
}

note:计算bank索引中所有文档的balance字段的索引值。

平均值聚合(指定脚本)

/bank/_search?size=0
{
  "aggs": {
    "avg_balance": {
      "avg": {
        "script": {
          "source": "doc.balance.value"
        }
        }
      }
  }
}

平均值聚合(缺失值处理)

/exams/_search?size=0
{
    "aggs" : {
        "grade_avg" : {
            "avg" : {
                "field" : "grade",
                "missing": 10 
            }
        }
    }
}

note:grade字段没有值的文档将会与值为10的文档落入相同的桶中。
ps:默认情况下,缺值文档将会被忽略,除非它们的字段中拥有值。

最大值聚合(指定字段)

/bank/_search?size=0
{
  "aggs": {
    "max_age": {"max": {"field": "age"}}
  }
}

note:获取bank索引中所有文档中最大的age。

最小值聚合(指定字段)

/bank/_search?size=0
{
  "aggs": {
    "min_age": {
      "min": {
        "field": "age"
      }
    }
  }
}

百分比聚合
百分数表示观测值的某一百分比出现的点。

百分数通常用于发现异常值。正态分布中,0.13th与99.87th百分位数表示偏离平均值三个标准差。通常情况下,超出三个标准差的数据被认为是异常的。

当检索一个范围的百分比范围时,可以使用百分位数来判断数据分布。

GET bank/_sarch
{
  "size":0,
  "aggs": {
    "age_outlier": {
      "percentiles": {
        "field": "age"
      }
    }
  }
}

note:查询bank索引下age字段的百分数位。
ps:默认情况下,百分比度量将会生成一个百分比范围:[1, 5, 25, 50, 75, 95, 99]。
ps:聚合会为默认范围内的每个百分比返回一个计算值。

百分比聚合(指定百分比)

GET bank/_search
{
  "size":0,
  "aggs": {
    "age_outlier": {
      "percentiles": {
        "field": "age",
        "percents": [95, 99, 99.9]
      }
    }
  }
}

百分比聚合(返回数组)

GET bank/_search
{
  "size":0,
  "aggs": {
    "age_outlier": {
      "percentiles": {
        "field": "age",
        "percents": [95, 99, 99.9],
        "keyed": false
      }
    }
  }
}

note:默认情况下,将以散列形式返回范围。

统计数据聚合

GET /bank/_search?size=0
{
  "aggs": {
    "balances_stats": {
      "stats": {
        "field": "balance"
      }
    }
  }
}

note:获取bank索引的balance字段的统计信息。

求和聚合

GET /bank/_search?size=0
{
  "query": {
    "constant_score": {
      "filter": {
        "match": {"state": "IA"}
      }
    }
  },
  "aggs": {
    "IA_balances": {
      "sum": {
        "field": "balance"
      }
    }
  }
}

note:求bank索引中,state为IA的文档的balance字段和。

值计数聚合

GET /bank/_search?size=0
{
  "aggs":{
    "balances_count": { "value_count": {"field": "balance"}}
  }
}

note:求bank索引中,balance字段值的数量。


Elasticsearch 6.4 文档

猜你喜欢

转载自blog.csdn.net/qq_32165041/article/details/83069525
今日推荐