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.@fields.request_time",

8: "size": 5

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.@fields.request_time 的值进行分组后的运算。

第8行的 size 表示分组运算,最多返回多少行。

这个例子的查询结果如下,这里简单起见,只返回了2条。:

1: {

2: "took": 35641,

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: "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的请求数排序

查询JSON

1: {

2: "size": 0,

3: "facets": {

4: "time_stats": {

5: "terms_stats": {

6: "key_field": "nginx_log.@fields.ip",

7: "value_field": "nginx_log.@fields.request_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.@fields.request_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: }

这个方法的更多参考:

整体参考资料:

es统计有多少个分组_ElasticSearch 分组查询的几个例子相关推荐

  1. es统计有多少个分组_ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)

    1 普通聚合分析 1.1 直接聚合统计 (1) 计算每个tag下的文档数量, 请求语法: GET book_shop/it_book/_search { "size": 0, // ...

  2. es统计有多少个分组_es多字段分组去重统计

    < es多字段分组去重统计 oracle中sql: select a1 ,b1 from dual group by a1 ,b1 或 select DISTINCT a1 ,b1 from d ...

  3. es统计有多少个分组_es中数据分组统计 es分组统计

    数据在ElasticSearch,需要对数据进行统计分析,怎么做? 如何对excel2016中的数据进行分类汇总?在对表进行分类汇总之前,首先要对汇总表的关键字进行排序,对小计的字段进行排序,然后单击 ...

  4. java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询过程解析...

    这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java连接elas ...

  5. list 分组_Power query 灵活处理员工特殊出勤问题(3)-TableGroup分组 amp; 合并查询

    断更了几天, 忙着别的事情去.....今天终于好好坐下, 继续写分享. 这一期主要内容是, 利用TableGroup分组 & 最终合并查询; 一. 数据反馈 前几天, 妹纸发来消息说数据不对, ...

  6. mysql分组排列的查询语句_数据的排序与分组语句_MySQL

    bitsCN.com 数据的排序与分组语句 使用SQL语句执行查询操作时,我们可能发现查询出的数据结果的排序是无序的.为了更好的观察数据表中的查询结果,开发人员或者用户经常要对查询的数据进行排序操作, ...

  7. mysql数据库(排序,聚合函数,分组,分页查询,union,连接查询,主键外键)

    1.排序(order by) select * from stu order by age; -- 默认升序 升序 ASC 降序DESC -- DESC 具有查看表的结构的功能 desc stu; 不 ...

  8. mysql 分组_mysql分组查询(总结)

    分组查询 /* 语法: select 查询列表 from 表 [where 筛选条件] group by 分组的字段 [order by 排序的字段]; 特点: 1.和分组函数一同查询的字段必须是gr ...

  9. influxdb 最近小时统计_用pandas快速统计学生年龄班级等分组信息

    最近收到一个求助邮件,他的需求如下: 我是小学的一名统计员,因长期做统计工作,近期,自学一点python,但如何把excel中的8位数出生日期转成年龄,一直做不好,现请您帮忙一下,不知能否帮! 这个问 ...

  10. mysql 分组查询例子_分组查询GROUP BY用法例子详解

    GROUP BY在mysql中是分组查询了,那么你对于GROUP BY有了解多少呢,下面我们来看一篇关于GROUP BY使用例子,具体的细节如下所示. 在SQL中使用GROUP BY来对SELECT的 ...

最新文章

  1. 10月份机房技术指标
  2. 什么是正定 半正定 矩阵 用通俗话解释的
  3. mysql数据库优化课程---16、mysql慢查询和优化表空间
  4. 撩课-Web大前端每天5道面试题-Day38
  5. Xcode12.5最新快捷键的使用(学会事半功倍)
  6. AIX主机信任关系配置
  7. 看完这篇Redis缓存三大问题,够你和面试官battle几回合了
  8. 沈南鹏问了微软CEO四个问题
  9. 河北软件职业技术学院计算机专业分数线,河北软件职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  10. golang 使用 consul 做服务发现
  11. FORTRAN里的SCALE函数
  12. 04.如何升级扩展以支持Visual Studio 2019
  13. Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out
  14. 用友服务器换了ip地址怎么修改,用友服务器ip地址更换
  15. EMNIST: an extension of MNIST to handwritten letters(数据集简介)
  16. Python:SM2
  17. subscript on non-array or too many dimensions
  18. Linux/Unix-stty命令详解
  19. 降压(Buck)变换电路设计原理、参数取值及MATLAB仿真实验
  20. VMWare 15安装以及创建Ubuntu虚拟机

热门文章

  1. [搬运] 写给 C# 开发人员的函数式编程
  2. Java——异常处理,数据库连接
  3. Canu FAQ常见问题
  4. iOS开发日记39-上传ERROR-90535,90529,90049
  5. 邮件服务器最常见的安全问题及解决办法
  6. wow中国正式商业化收费运营 level 31达成
  7. mybatis foreach标签的使用
  8. POI操作Excel详解,HSSF和XSSF两种方式
  9. MyCat重要概念以及基础配置详解
  10. Java 线程死锁初理解