网站建设专业输入法,合肥网站制作联系方式,wordpress新写文章会卡死,郑州友网站建设文章目录 一#xff0c;基本概念主要聚合类型 二#xff0c;实战1#xff0c;搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄#xff0c;但不显示这些人的详情2#xff0c;按照年龄聚合#xff0c;并且请求每个年龄的平均薪资 Elasticsearch 的聚合#xff0… 文章目录 一基本概念主要聚合类型 二实战1搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄但不显示这些人的详情2按照年龄聚合并且请求每个年龄的平均薪资 Elasticsearch 的聚合Aggregations功能允许用户对数据集进行聚合分析从而获得数据的摘要信息。 聚合应用于搜索结果帮助用户理解数据的分布、统计和模式。
一基本概念
聚合提供了从数据中分组和提取数据的能力。聚合类似于 SQL GROUPBY 和 SQL 聚合函数。
桶Buckets桶是聚合的基础用于将数据分组。每个桶代表一个分组可以基于不同的标准如日期范围、数值范围、术语等。度量Metrics度量聚合用于计算数值字段的统计数据如总和、平均值、最小值、最大值、计数等。管道聚合Pipeline Aggregations管道聚合是对其他聚合结果进行二次处理的聚合如计算移动平均值、百分比变化等。子聚合Sub-Aggregations子聚合允许在桶内部进一步细分数据可以嵌套使用。
主要聚合类型
terms基于字段的术语进行分组并为每个术语提供度量如计数。histogram基于数值字段创建数值区间桶并计算每个区间内的文档数量。date_histogram类似于histogram但是专门用于日期字段可以按照年、月、日等时间单位分组。range基于指定的范围表达式对数值或日期字段进行分组。significant_terms找出在特定数据集中出现的显著术语与常规terms聚合不同它基于统计测试来确定哪些术语是显著的。cardinality提供一个字段中唯一值的近似计数这个聚合类型对于大数据集很有用因为它比普通的unique计数更高效。avg、sum、min、max这些聚合类型分别计算数值字段的平均值、总和、最小值和最大值。stats 和 extended_stats提供数值字段的多种统计信息包括平均值、总和、最小值、最大值、标准差等。
二实战
以下Demo都是基于对索引bank的搜索。
1搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄但不显示这些人的详情
GET bank/_search
{query: {match: {address: mill}},aggs: {group_by_state: {terms: {field: age}},avg_age: {avg: {field: age}}},size: 0
}query定义了搜索的具体条件。 match这是一个全文搜索查询用于搜索address字段中包含mill的文档。 aggs定义了聚合操作用于对搜索结果进行分组和统计分析。 group_by_state这是一个terms聚合命名为group_by_state(注意则个名称是自定义的不是标准字段)它将结果基于age字段的术语进行分组并为每个年龄提供计数。 terms指定使用age字段进行分组并统计文档数量。 avg_age这是一个度量聚合命名为avg_age(也是自定义名称)用于计算所有匹配文档的age字段的平均值。 avg指定聚合类型为平均值。 size指定返回的文档数量。在这里设置为0表示不返回任何匹配的文档只返回聚合结果。
查询解释
这个查询将返回所有address字段包含mill的文档但不会返回这些文档本身只返回基于这些文档的聚合分析结果。
聚合解释
group_by_state聚合将为每个不同的年龄值创建一个桶并计算每个年龄组中有多少文档。例如如果有多个文档的age字段是30它们将被归为一个桶并且这个桶的计数将是这些文档的数量。avg_age聚合将计算所有匹配文档的age字段的平均值提供一个单一数值表示所有这些文档年龄的平均。
查询结果
聚合结果包含在响应体中的aggregations对象中这个对象中有我们命名的两个属性avg_age和group_by_state属性值包含聚合结果。
2按照年龄聚合并且请求每个年龄的平均薪资
这是一个桶聚合先按照年龄分桶统计每个年龄的人数然后统计每个桶内的人的平均薪资。
注意下面的写法最外层聚合是按照年龄分桶嵌套子聚合是外层聚合的基础上统计桶内人的平均薪资。
GET bank/_search
{query: {match_all: {}},aggs: {group_by_age: {terms: {field: age},aggs: {avg_balance: {avg: {field: balance}}}}},size: 0
}query定义了搜索的具体条件。 match_all这是一个查询它匹配所有文档。这意味着搜索结果将包括bank索引中的所有文档。 aggs定义了聚合操作用于对搜索结果进行分组和统计分析。 group_by_age这是一个terms聚合它将结果基于age字段的值进行分组。 terms指定使用age字段进行分组这将创建一个桶为每个不同的年龄值。aggs在这个terms聚合内部定义了一个子聚合avg_balance。 avg_balance这是一个度量聚合用于计算每个年龄组的账户余额balance字段的平均值。 avg指定聚合类型为平均值计算每个年龄桶中balance字段的平均数。 size指定返回的文档数量。在这里设置为0表示不返回任何匹配的文档只返回聚合结果。
聚合解释
group_by_age聚合将为每个不同的年龄值创建一个桶并计算每个年龄组中的文档数量。在每个年龄桶内avg_balance子聚合将计算该年龄组内所有文档的balance字段的平均值。
这个DSL的用例是分析银行索引中不同年龄段的平均账户余额。结果将展示每个年龄组的账户平均余额这可以用于了解不同年龄段的财务状况或进行市场分析。