es统计有多少个分组_ElasticSearch分组查询的⼏个例⼦facets接⼝可以根据query返回统计数据,其中的 terms_stats 是分组统计,根据key的情况返回value的统计数据,类似group by的意思。
"terms_stats" : { "key_field" : "", "value_field" : "" }
例⼦:查询每个ip的请求执⾏时间
查询语句:
1: {
2: "size": 0,
3: "facets": {
4: "ips_stats": {
5: "terms_stats": {
6: "key_field": "nginx_log.@fields.ip",
7: "value_field": "nginx_log.@quest_time",
8: "size": 5
groupby分组9: }
10: }
11: }
12: }
说明:
第2⾏的 size 表⽰ hits 命中的返回0条;
第3⾏的facets,第5⾏的terms_stats 是做分组查询的必要关键字。
第4⾏的 ips_stats 是对这个分组查询的命名,可以⾃⼰随便起。
第6⾏ key_field 表⽰对 nginx_log.@fields.ip 字段进⾏分组。
第7⾏ value_field 表⽰ 对 nginx_log.@quest_time 的值进⾏分组后的运算。
第8⾏的 size 表⽰分组运算,最多返回多少⾏。
这个例⼦的查询结果如下,这⾥简单起见,只返回了2条。:
1: {
2: "took": 35641,
3: "timed_out": false,
4: "_shards": {
5: "total": 5,
6: "successful": 5,
7: "failed": 0
8: },
10: "total": 193109307,
11: "max_score": 1,
12: "hits": []
13: },
14: "facets": {
15: "ips_stats": {
16: "_type": "terms_stats",
17: "missing": 0,
18: "terms": [
19: {
20: "term": "180.149.157.110",
21: "count": 1871112,
22: "total_count": 1871112,
23: "min": 0.016,
24: "max": 80.306,
25: "total": 545853.1529999943,
26: "mean": 0.2917266058899704
27: },
28: {
29: "term": "59.49.225.22",
30: "count": 515179,
31: "total_count": 515179,
32: "min": 0,
33: "max": 600.004,
34: "total": 27793.9160000002,
35: "mean": 0.053950017372602924
36: }
37: ]
38: }
39: }
40: }
从结果我们可以看到,我们对 每个ip的执⾏时间计算了 个数、最⼤最⼩值,平均值,合计的计算。例⼦:按照每个ip的请求数排序
1: {
2: "size": 0,
3: "facets": {
4: "time_stats": {
5: "terms_stats": {
6: "key_field": "nginx_log.@fields.ip",
7: "value_field": "nginx_log.@quest_time",
8: "size": 2,
9: "order": "total"
10: }
11: }
12: }
13: }
只⽐上述查询多了⼀个 order 属性.输出结果格式跟上⾯⼀样,只不过是排好序的,就不罗列了.
例⼦:查询整个⽹站的执⾏时间
查询json:
1: {
2: "query": {
3: "match_all": {}
4: },
5: "size": 0,
6: "facets": {
7: "stat1": {
8: "statistical": {
9: "field": "nginx_log.@quest_time"
10: }
11: }
12: }
13: }
说明:
最初的查询条件我们没有写,意味着取全部,如果你想查询指定范围,可以在这⾥书写。第2-4⾏。第5⾏的size表⽰查询条件显⽰的数据条数。
statistical 是对⼀个数字字段做统计的facet。
结果:
1: {
2: "took": 4824,
3: "timed_out": false,
4: "_shards": {
5: "total": 5,
6: "successful": 5,
7: "failed": 0
8: },
9: "hits": {
10: "total": 193109307,
11: "max_score": 1,
12: "hits": []
13: },
14: "facets": {
15: "stat1": {
16: "_type": "statistical",
17: "count": 142590544,
18: "total": 59320216.00531181,
19: "min": 0,
20: "max": 5347.085,
21: "mean": 0.4160178812790826,
22: "sum_of_squares": 14578358539.95768, 23: "variance": 102.06623708075713,
24: "std_deviation": 10.102783630304923 25: }
26: }
27: }
这个⽅法的更多参考:
整体参考资料:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论