赞
踩
说明: Elasticsearch不仅是一个大数据搜索引擎,也是一个大数据分析引擎。它的聚集(aggregation)统计的REST端点可用于实现与统计分析有关的功能。Elasticsearch提供的聚集分为三大类。
平均值聚集用来计算索引中某个数值字段的平均值,对索引sougoulog的字段rank求平均值的聚集请求如下。
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "rank_avg": { "avg": { "field": "rank", "missing": 0 } } } }
在这个请求中,aggs的参数使用了一个类型为avg的聚集,它会对rank字段求平均值,请求中的missing参数表示如果遇到rank字段为null的文档,则当作0计算。这一聚集被命名为rank_avg,当然得新建索引,添加数据。
使用最大值和最小值聚集可以快速地得到搜索结果中某个数值字段的最大值、最小值,例如,获取rank字段的最大值的请求如下。
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "rank_max": { "max": { "field": "rank", "missing": 0 } } } }
同理,如果要得到rank字段的最小值,把聚集类型设置为min即可。
与平均值聚集类似,求和聚集可以让搜索结果在某个数值字段上求和。
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "rank_sum": { "sum": { "field": "rank", "missing": 0 } } } }
聚集可以一次性返回搜索结果在某个数值字段上的最大值、最小值、平均值、个数、总和。
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "rank_stats": { "stats": { "field": "rank", "missing": 0 } } } }
百分比聚集用于近似地查看搜索结果中某个字段的百分比分布数据,你可以根据搜索结果清晰地看出某个值以内的数据在整体数据集中的占比。例如,对sougoulog的rank字段做百分比聚集的请求如下。
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "rank_percent": { "percentiles": { "field": "rank" } } } }
百分比等级聚集跟百分比聚集的参数恰好相反,传入一组值,就可以看到这个值以内的数据占整体数据的百分比。例如:
POST sougoulog/_search { "query": { "match_all": { } }, "size": 0, "aggs": { "percent_ranks": { "percentile_ranks": { "field": "rank", "values": [ 10, 50 ] } } } }
在这个聚集请求中,把聚集类型设置为percentile_ranks表示发起百分比等级聚集,values用来设置需要查看的rank值,可以得到以下结果。
"aggregations" : {
"percent_ranks" : {
"values" : {
"10.0" : 82.98,
"50.0" : 94.22
}
}
}
这个结果表明,有82.98%的文档rank值小于等于10,有94.22%的文档rank值小于等于50。
桶聚集会按照某个字段划分出一些区间,把搜索结果的每个文档按照字段所在的区间划分到桶中,桶聚集会返回每个桶拥有的文档数目。桶的数目既可以用参数确定,也可以在执行过程中按照数据内容动态生成。桶的默认上限数目是65535,返回的桶数目超过这个数目会报错。另外,桶聚集可以嵌套其他的聚集来得到一些复杂的统计结果,度量聚集是不能嵌套其他子聚集的。
聚集需要你提供一组左闭右开的区间,在返回的结果中会得到搜索结果的某个字段落在每个区间的文档数目,参数from用于提供区间下界,to用于提供区间上界。统计的字段既可以是数值类型的字段也可以是日期类型的字段。例如:
POST sougoulog/_search
{
"query": {
"match_all": {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。