Elasticsearch学习---聚合查询之Metric Aggregations

前言

Elasticsearch除搜索以外,还提供了针对数据统计分析的功能,通过各种API可以构建数据的复杂查询,不同类型的聚合查询都有自己的目的和输出,为了更好的理解这些类型,人们通常又会把它们分为三大类。

聚合类型三大类

Bucketing(桶聚合)

每个桶都与一个键和一个文档标准相关联,通过桶的聚合查询,我们将得到一个桶的列表,即:满足条件的文档集合。

Metric(指标)

计算一组文档的某些指标项的聚合

Pipeline(管道)

对其他聚合的输出或相关指标进行二次聚合

Metric Aggregations

Avg Aggregation

用于计算文档中数值的平均值,只能对数值类型的进行计算

GET /kibana_sample_data_flights/_search
{
  "aggs": {
    "avg_AvgTicketPrice": {
      "avg": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

同样支持脚本

GET /kibana_sample_data_flights/_search
{
  "aggs": {
    "avg": {
      "avg": {
        "script": {
          "source": "doc.AvgTicketPrice.value"
        }
      }
    }
  }
}

在这里插入图片描述

对结果乘以100

GET /kibana_sample_data_flights/_search
{
  "aggs": {
    "avg": {
      "avg": {
        "field": "AvgTicketPrice", 
        "script": {
          "lang": "painless", 
          "source": "_value * params.correction",
          "params": {
            "correction":100
          }
        }
      }
    }
  }
}

在这里插入图片描述

Cardinality Aggregation

对不同值进行统计计算,类似于sql中的 distinct 后进行count,去重求和。

查询目的地国家的种类

POST kibana_sample_data_flights/_search
{
  "aggs": {
    "dest_count": {
      "cardinality": {
        "field": "DestCountry"
      }
    }
  }
}

在这里插入图片描述

Stats Aggregation

统计聚合,返回的统计数据包括:min,max,sum,count和avg。

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "multi_stats": {
      "stats": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

Extended Stats Aggregation

扩展统计聚合,包含了多种指标的聚合信息

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "multi_stats": {
      "extended_stats": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

Max Aggregation

计算文档中数值的最大值

GET /kibana_sample_data_flights/_search
{
  "size": 0, 
  "aggs": {
    "max_ticket": {
      "max": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

Min Aggregation

同样可以计算最小值

在这里插入图片描述

Percentiles Aggregation

用于计算从文档中提取数值的一个或多个百分位数,默认百分位数范围[1,5,25,50,75,95,99]

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "AvgTicketPrice": {
      "percentiles": {
        "field": "AvgTicketPrice",
        "percents": [
          1,
          5,
          25,
          50,
          75,
          95,
          99
        ]
      }
    }
  }
}

在这里插入图片描述

可以看到,99%的票价低于1166,95%票价低于1035,50%票价低于640

Percentile Ranks Aggregation

百分位排名聚合查询

从以下查询,可以看出100%的票价低于1200,93%的票价低于1000。

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "AvgTicketPrice": {
      "percentile_ranks": {
        "field": "AvgTicketPrice",
        "values": [1000,1200]
      }
    }
  }
}

在这里插入图片描述

Sum Aggregation

汇总文档中提取的数值

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "sum_price": {
      "sum": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

Value Count Aggregation

用于计算从聚合文档中提取的值的数量

GET /kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "value_count": {
      "value_count": {
        "field": "AvgTicketPrice"
      }
    }
  }
}

在这里插入图片描述

文档总数就是13059,说明每个文档都有AvgTicketPrice值
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码拉松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值