基础查询结构:
GET http://ip:prot/textbook/_search
{ "query" : { ...query子句... },
"aggs" : {
"agg_name":{
"agg_type": {
"agg_arg": agg_arg_value
}
}
},
"sort" : { ..sort子句.. }
"from" : 0, // 返回搜索结果的开始位置
"size" : 10, // 分页大小,一次返回多少数据
"_source" :[ ...需要返回的字段数组... ],
}
这个聚合查询就是写aggs里面的语句。其中,agg_name
是聚合操作的名称,agg_type
是聚合操作的类型,agg_arg
是聚合操作的参数,agg_arg_value
是参数值。
- Metric(指标):
Metric聚合用于对数值字段进行统计计算,例如求平均值、最大值、最小值、求和、统计样本方差等。它能够提供各种度量指标,以便对数据进行汇总和分析。在聚合查询中,可以通过指定一个或多个Metric聚合来对数值字段进行计算,并将结果返回给用户。 - Bucketing(桶):
Bucket聚合用于将文档分配到不同的桶中,基于指定的条件。桶聚合能够将数据划分为不同的分组,以便进行进一步的分析和可视化。常见的桶聚合包括terms、histogram、date_histogram等。通过Bucket聚合,可以对数据进行分组、过滤和排序,以便更好地了解数据的分布和模式。类似于mysql中的grouo by语法。 - Matrix(矩阵):
Matrix聚合提供了一种在给定文档集合上执行复杂分析的方法。它可以用于计算字段之间的统计量,例如两个字段之间的相关性或协方差。Matrix聚合返回一个矩阵,其中包含了指定字段之间的各种统计信息。通过Matrix聚合,可以对数据进行更深入的分析和探索。 - Pipeline(管道):
Pipeline聚合能够对其他聚合的结果进行二次聚合。它们可以用于对已经计算出的聚合结果进行进一步的处理和计算。例如,可以将Bucket聚合的结果传递给Metric聚合,以便对桶中的数据进行度量计算。Pipeline聚合提供了更高级的聚合操作,以便更好地处理和分析数据。类似于mysql中的having语法。
1、Metric(指标)
这个查询将返回"amount"字段的平均值。在聚合查询中,"size"参数设置为0,表示不需要返回文档本身,只需要聚合结果。下面的这个只是一个简单的查询,是单值分析。
Get /my_index/_search
{"size": 0,"aggs": {
//求amount字段的平均值"amount_avg": {"avg": {"field": "amount"},
//求amount字段的最小值"min_sales": {"min": {"field": "amount"}},
//求amount字段的最大值"my_max":{"max": {"field":"amount" }}}
}
1.1 stats(会返回多个聚合结果)
- 使用
_stats
查询来获取有关字段的统计信息,例如平均值、最小值、最大值等。
Get /my_index/_search
{"size": 0,"aggs": {
//求amount字段的各个指标"my_stats": {"stats": {"field": "amount"}}
}
1.2 Extended_stats(扩展统计信息)
- 使用
_extended_stats
查询来获取有关字段的扩展统计信息,例如方差、偏度和峰度。GET /your_index/_search {"size": 0,"aggs": {"my_extended_stats": {"extended_stats": {"field": "amount"}}} }
1.3 唯一值(Cardinality)
- 查这字段有哪些值,返回这个数量。相当于mysql中的distinct
GET /your_index/_search
{"size": 0,"aggs": {"my_cardinality": {"cardinality": {"field": "amount"}}}
}
1.4 Percentile_rank(百分位数排名)
- Percentiles聚合可以了解数据的分布情况,从小到大排序,可以显示自己想知道的第百分之几的值。可以更好的了解数据的离散程度和异常值。
GET /your_index/_search
{"size": 0,"aggs": {"my_percentiles": {"percentiles": {"field": "amount","percents": [20,50,75,99]}}}
}
1.5 top_hits(top匹配值)
- 用于获取匹配度最高的几个文档。此时主要看的是score字段的值
GET /your_index/_search
{"size": 0,"aggs": {"My_top": {"top_hits": {"_source": ["aaaa"],"size": 2}}}
}