es 时间字段聚合_Elasticsearch 聚合套路

本文详细介绍了Elasticsearch中聚合的使用,包括桶(Buckets)和指标(Metrics)的概念,通过实例展示了如何进行时间字段的聚合操作,如terms、sum、组合聚合、histogram和date_histogram等,以及如何进行多桶排序、使用脚本和过滤条件等高级用法。
摘要由CSDN通过智能技术生成

聚合套路

类似于 DSL 查询表达式,聚合也有可组合的语法:独立单元的功能可以被混合起来提供你需要的自定义行为。这意味着只需要学习很少的基本概念,就可以得到几乎无尽的组合。

先说ES聚合的两个基本概念:桶(Buckets)和指标(Metrics)。

桶(Buckets):满足特定条件的文档的集合。分组的意思,类似SQL中的GROUP BY

指标(Metrics):对桶内的文档进行统计计算。注意理解黄色部分,类似于SQL中的COUNT() 、 SUM() 、 MAX() 等统计方法。

注意记住并理解上面引用文字中标黄的那一段。它就是聚合套路的核心点

开始下面的内容之间,我们先去官网‘借’点数据。

POST /cars/transactions/_bulk

{ "index": {}}

{ "price" : 10000, "color" : "red", "make" : "honda", "sold" : "2014-10-28" }

{ "index": {}}

{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }

{ "index": {}}

{ "price" : 30000, "color" : "green", "make" : "ford", "sold" : "2014-05-18" }

{ "index": {}}

{ "price" : 15000, "color" : "blue", "make" : "toyota", "sold" : "2014-07-02" }

{ "index": {}}

{ "price" : 12000, "color" : "green", "make" : "toyota", "sold" : "2014-08-19" }

{ "index": {}}

{ "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }

{ "index": {}}

{ "price" : 80000, "color" : "red", "make" : "bmw", "sold" : "2014-01-01" }

{ "index": {}}

{ "price" : 25000, "color" : "blue", "make" : "ford", "sold" : "2014-02-12" }

terms(分组、group by)

我们先来个最简单的。看下有多少种颜色的汽车。

GET cars/transactions/_search

{

"size": 0,

"aggs": {

"取一个你想要的名字": {

"terms": {

"field": "color.keyword",

"size": 10

}

}

}

}

聚合操作被置于顶层参数 aggs 之下(全称aggregations)

为你的取一个你想要的名字,以便在应用里面解析结果

最外面的size设置成 0,因为我们并不关心搜索结果的具体内容,所以将返回记录数设置为 0 来提高查询速度。

terms里面的size,用来限制统计结果数量。配合order参数,可以很轻松完成TopN的需求

sum(求和)

我们现在需要统计汽车的总销售额。

GET cars/transactions/_search

{

"size": 0,

"aggs": {

"取一个你想要的名字": {

"sum": {

"field": "price"

}

}

}

}

组合聚合

在我们组合在我们使用不同的嵌套方案时,聚合的力量才能真正得以显现。

将度量嵌套于桶内

标题看起来太官方了,翻译过来就是在分组之后统计某些数量。我们现在需要统计每种颜色汽车的销售额,并按销售额降序排列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值