前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch(7.2.2)-es聚合查询之桶聚合

ElasticSearch(7.2.2)-es聚合查询之桶聚合

作者头像
cwl_java
发布2019-11-03 12:42:01
2.5K0
发布2019-11-03 12:42:01
举报
文章被收录于专栏:cwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。undefined本文链接:https://blog.csdn.net/weixin_42528266/article/details/102812520

简介:⼿把⼿玩转es的聚合查询之桶聚合

ES聚合分析

  • 聚合分析是数据库中重要的功能特性,完成对⼀个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最⼤值、最⼩值,计算和、平均值等。ES作为搜索引擎兼数据库,同样提供了强⼤的聚合分析能⼒。
  • 对⼀个数据集求最⼤、最⼩、和、平均值等指标的聚合,在ES中称为指标聚合
  • 关系型数据库中除了有聚合函数外,还可以对查询出的数据进⾏分组group by,再在组上进⾏指标聚合。在ES中称为桶聚合

Terms Aggregation 根据字段项分组聚合

  • ⽕箭队根据年龄进⾏分组
代码语言:javascript
复制
POST /nba/_search
{
	"query": {
		"term": {
			"teamNameEn": {
				"value": "Rockets"
			}
		}
	},
	"aggs": {
		"aggsAge": {
			"terms": {
				"field": "age",
				"size": 10
			}
		}
	},
	"size": 0
}

order 分组聚合排序

  • ⽕箭队根据年龄进⾏分组,分组信息通过年龄从⼤到⼩排序 (通过指定字段)
代码语言:javascript
复制
POST /nba/_search
{
	"query": {
		"term": {
			"teamNameEn": {
				"value": "Rockets"
			}
		}
	},
	"aggs": {
		"aggsAge": {
			"terms": {
				"field": "age",
				"size": 10,
				"order": {
					"_key": "desc"
				}
			}
		}
	},
	"size": 0
}
  • ⽕箭队根据年龄进⾏分组,分组信息通过⽂档数从⼤到⼩排序 (通过⽂档数)
代码语言:javascript
复制
POST /nba/_search
{
	"query": {
		"term": {
			"teamNameEn": {
				"value": "Rockets"
			}
		}
	},
	"aggs": {
		"aggsAge": {
			"terms": {
				"field": "age",
				"size": 10,
				"order": {
					"_count": "desc"
				}
			}
		}
	},
	"size": 0
}
  • 每⽀球队按该队所有球员的平均年龄进⾏分组排序 (通过分组指标值)
代码语言:javascript
复制
POST /nba/_search
{
	"aggs": {
		"aggsTeamName": {
			"terms": {
				"field": "teamNameEn",
				"size": 30,
				"order": {
					"avgAge": "desc"
				}
			},
			"aggs": {
				"avgAge": {
					"avg": {
						"field": "age"
					}
				}
			}
		}
	},
	"size": 0
}

筛选分组聚合

  • 湖⼈和⽕箭队按球队平均年龄进⾏分组排序 (指定值列表)
代码语言:javascript
复制
POST /nba/_search
{
	"aggs": {
		"aggsTeamName": {
			"terms": {
				"field": "teamNameEn",
				"include": ["Lakers", "Rockets", "Warriors"],
				"exclude": ["Warriors"],
				"size": 30,
				"order": {
					"avgAge": "desc"
				}
			},
			"aggs": {
				"avgAge": {
					"avg": {
						"field": "age"
					}
				}
			}
		}
	},
	"size": 0
}
  • 湖⼈和⽕箭队按球队平均年龄进⾏分组排序 (正则表达式匹配值)
代码语言:javascript
复制
POST / nba / _search
{
	"aggs": {
		"aggsTeamName": {
			"terms": {
				"field": "teamNameEn",
				"include": "Lakers|Ro.*|Warriors.*",
				"exclude": "Warriors",
				"size": 30,
				"order": {
					"avgAge": "desc"
				}
			},
			"aggs": {
				"avgAge": {
					"avg": {
						"field": "age"
					}
				}
			}
		}
	},
	"size": 0
}

Range Aggregation 范围分组聚合

  • NBA球员年龄按20,20-35,35这样分组
代码语言:javascript
复制
POST /nba/_search
{
	"aggs": {
		"ageRange": {
			"range": {
				"field": "age",
				"ranges": [{
						"to": 20,
						"key": "A"
					},
					{
						"from": 20,
						"to": 35,
						"key": "B"
					},
					{
						"from": 35,
						"key": "C"
					}
				]
			}
		}
	},
	"size": 0
}

Date Range Aggregation 时间范围分组聚合

  • NBA球员按出⽣年⽉分组
代码语言:javascript
复制
POST /nba/_search
{
	"aggs": {
		"birthDayRange": {
			"date_range": {
				"field": "birthDay",
				"format": "MM-yyy",
				"ranges": [{
						"to": "01-1989"
					},
					{
						"from": "01-1989",
						"to": "01-1999"
					},
					{
						"from": "01-1999",
						"to": "01-2009"
					},
					{
						"from": "01-2009"
					}
				]
			}
		}
	},
	"size": 0
}

Date Histogram Aggregation 时间柱状图聚合

  • 按天、⽉、年等进⾏聚合统计。可按 year (1y), quarter (1q), month (1M), week (1w), day(1d), hour (1h), minute (1m), second (1s) 间隔聚合
  • NBA球员按出⽣年分组
代码语言:javascript
复制
POST /nba/_search
{
	"aggs": {
		"birthday_aggs": {
			"date_histogram": {
				"field": "birthDay",
				"format": "yyyy",
				"interval": "year"
			}
		}
	},
	"size": 0
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES聚合分析
  • Terms Aggregation 根据字段项分组聚合
  • order 分组聚合排序
  • 筛选分组聚合
  • Range Aggregation 范围分组聚合
  • Date Range Aggregation 时间范围分组聚合
  • Date Histogram Aggregation 时间柱状图聚合
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档