文章目录
- 前言
-
- [elasticsearch 聚合查询](#elasticsearch 聚合查询)
-
- [1. 桶聚合](#1. 桶聚合)
- [2. 度量聚合](#2. 度量聚合)
- [3. 嵌套聚合](#3. 嵌套聚合)
- [4. 指标聚合](#4. 指标聚合)
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
elasticsearch 聚合查询
以下是一些聚合查询可以执行的操作:
-
桶聚合(Bucket Aggregations):将文档分割成不同的桶(buckets),每个桶代表一个条件或者标准。常见的桶聚合包括根据词条、范围、日期等条件进行分桶。
-
度量聚合(Metric Aggregations):对文档中的数值字段进行计算,生成统计指标,如平均值、总和、最大值、最小值等。
-
嵌套聚合(Nested Aggregations):在其他聚合的结果上进行嵌套,以实现更复杂的分析。
-
指标聚合(Matrix Aggregations):对多个字段执行度量聚合,以生成多维度的统计信息。
1. 桶聚合
将文档分割成不同的桶(buckets),每个桶代表一个条件或者标准。常见的桶聚合包括根据词条、范围、日期等条件进行分桶。
根据日期进行分桶:
bash
GET /sales/_search
{
"query": {
"match_all": {}
},
"aggs": {
"genres": {
"terms": {
"field": "publish_date"
}
}
}
}
2. 度量聚合
假设您有一个名为 sales 的索引,其中包含销售数据,包括 price(价格)字段。现在,您想要计算销售总额和销售平均价格。
示例:
bash
GET /sales/_search
{
"aggs": {
"total_sales": {
"sum": {
"field": "price"
}
},
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
这个查询包含了两个度量聚合:
- total_sales: 使用 sum 聚合计算销售总额,通过将 price 字段的值相加得出。
- avg_price: 使用 avg 聚合计算销售平均价格,通过取 price 字段的平均值得出。
执行这个查询将返回计算得出的销售总额和销售平均价格。
3. 嵌套聚合
上面的例子是返回计算得出的销售总额和销售平均价格。
那么这回我们就查询聚合每个日期的销售总额和平均价格
当需要使用嵌套查询时,您通常会在主查询中嵌套一个或多个子查询,以便根据子查询的结果来过滤或进一步处理主查询的结果。
bash
GET /sales/_search
{
"size": 0,
"aggs": {
"自定义": {
"terms": {
"field": "publish_date"
},
"aggs": {
"total_sales": {
"sum": {
"field": "price"
}
},
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
4. 指标聚合
指标聚合查询是用于计算度量指标的查询,这些指标可以是总数、平均值、最大值、最小值等统计量。在 Elasticsearch 中,指标聚合允许您对字段进行聚合计算,以便了解数据集的特征和趋势。
以下是一些常见的指标聚合类型:
- Sum Aggregation(求和聚合):计算特定字段的总和。
- Avg Aggregation(平均值聚合):计算特定字段的平均值。
- Min Aggregation(最小值聚合):找出特定字段的最小值。
- Max Aggregation(最大值聚合):找出特定字段的最大值。
- Stats Aggregation(统计值聚合):提供特定字段的统计信息,如总数、平均值、最小值、最大值等。
- Extended Stats Aggregation(扩展统计聚合):与统计值聚合类似,但还提供了额外的信息,如方差、标准差等。