ElasticSearch聚合查询返回结果buckets取值

1.聚合查询如下:

{"size":0,"query":{"bool":{"must":[{"wildcard":{"county_company.keyword":{"wildcard":"*3*","boost":1}}},{"range":{"fault_start_time.keyword":{"from":"2019-10-01 00:00:00","to":"2019-10-31 14:25:35","include_lower":true,"include_upper":true,"boost":1}}}],"adjust_pure_negative":true,"boost":1}},"explain":true,"aggregations":{  //此处是聚合查询条件集合"alarm":{//此处是第一个聚合条件的 别名(自定义)用于返回取值使用"terms":{"field":"alarm_level_title.keyword", //分组聚合字段"size":10,"min_doc_count":1,"shard_min_doc_count":0,"show_term_doc_count_error":false,"order":[{"_count":"desc"},{"_key":"asc"}]}},"alarmLevel":{ //此处是第二个聚合条件的 别名"terms":{"field":"alarm_level.keyword", //聚合条件的字段名称"size":10,"min_doc_count":1,"shard_min_doc_count":0,"show_term_doc_count_error":false,"order":[{"_count":"desc"},{"_key":"asc"}]}}}
}

2.返回结果分析

{"took" : 50,"timed_out" : false,"_shards" : {"total" : 5,"successful" : 5,"skipped" : 0,"failed" : 0},"hits" : {"total" : 438589,  //返回总记录(总条数)"max_score" : 0.0,"hits" : [ ]},"aggregations" : {  //此处是聚合返回结果"alarm" : {    //此处是第一个聚合条件命名的返回结果"doc_count_error_upper_bound" : 0,"sum_other_doc_count" : 0,"buckets" : [    //此处返回的聚合值是一个数组{"key" : "默认等级","doc_count" : 438589}]},"alarmLevel" : {  //此处是第二个聚合条件命名的返回结果"doc_count_error_upper_bound" : 0,"sum_other_doc_count" : 0,"buckets" : [ //此处返回的聚合值是一个数组{"key" : "0000","doc_count" : 438589}]}}
}

3.使用java结果取值

String alarm = searchResponse.getAggregations().get("alarm").toString();
String alarmLevel = searchResponse.getAggregations().get("alarmLevel").toString();

根据别名取出返回的值,例如下:

{"alarm":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"默认等级","doc_count":438589}]}
}

进一步取出buckets中的单个key,doc_count的值:

JSONObject objectAlarm = JSONObject.parseObject(alarm);
objectAlarm.forEach((k,v)->{if(k.equals("alarm")){Map v2 = (Map)v;v2.forEach((k1,v1)->{if(k1.equals("buckets")){JSONArray array = JSONArray.parseArray(v1.toString());for (int i = 0; i < array.size(); i++) {HistoryFaultLevelDTO historyFaultLevelDTO = new HistoryFaultLevelDTO();Map v4 = JSON.parseObject(array.get(i).toString(), Map.class);historyFaultLevelDTO.setFaultLevelTitle(v4.get("key").toString());historyFaultLevelDTO.setFaultLevelCount(Integer.parseInt(v4.get("doc_count").toString()));resultList.add(historyFaultLevelDTO);}}});}});
最后成功取到聚合的值,如有更简便的方法,欢迎留言,谢谢。

ElasticSearch聚合查询返回结果buckets取值相关推荐

  1. php聚合查询,php elasticsearch 聚合查询(Aggregation)

    Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...

  2. Elasticsearch聚合查询案例分享

    为什么80%的码农都做不了架构师?>>>    Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...

  3. Elasticsearch聚合查询多字段设置权重

    Elasticsearch聚合查询多字段设置权重 背景 环境说明 script设置权重 小结 背景 实际应用中,可能会需要为为doc文档中某个字段的某些特定的值设置权重,影响排序.es提供了比较灵活的 ...

  4. ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)

    本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...

  5. java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)

    PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...

  6. (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询

    转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...

  7. ElasticSearch 聚合查询 JavaApi

    ES 聚合查询Java Api 分页查询,按照时间进行分组查询求平均(多平均),按照某一字段分组求聚合等等 分页查询 SysUser loginUser = SecurityUtils.getLogi ...

  8. ES/ElasticSearch 聚合查询时报错:too_many_buckets_exception

    环境:ElasticSearch6.7 问题描述: {"error": {"root_cause": [],"type": "se ...

  9. ElasticSearch 聚合查询

    价格总和: 1,使用aggs   2,自己起个名字price_of_sum  3,求和sum   4,filed要求和的字段 GET /lib5/items/_search {"aggs&q ...

最新文章

  1. Python 技术篇-用request库调用莉莉机器人api接口实现与机器人对话实例演示
  2. Activity中UI框架基本概念
  3. QT学习:读写二进制文件
  4. click传值vue_对vue下点击事件传参和不传参的区别详解
  5. flatten的用法
  6. 《江城子·己卯正月二十日夜记梦》——苏轼
  7. Perl语言入门,第17章自写习题答案。
  8. 计算机代码编程知识,编程基础知识
  9. 智慧监狱UWB定位系统解决方案
  10. json转Java_在线JSON转Java实体类—在线工具
  11. java经典算法(一)——zws
  12. 手机短信验证码收不到怎么办?原因和解决方案全都在这里
  13. 磁盘管理之 raid 文件系统 分区
  14. 国内最好的五大广告聚合平台
  15. Python爬取链家网上的房源信息
  16. Eclipse安装( jdk安装以及环境配置教程 )
  17. 服务器芯片组 c242评测,完胜690!最详尽的C68G芯片组性能评测
  18. 日更100天(42)每天进步一点点
  19. PyTorch faster_rcnn之一源码解读一
  20. java图片轮播_java制作广告图片自动轮播控件

热门文章

  1. oracle awr使用方式,Oracle中AWR的使用
  2. linux修改smb端口,centos下smb配置
  3. 谢谢!yefuna@gmail.com
  4. 矩阵库eigen的用法(三)————求行列式值和三角分解求线性方程组的解
  5. 透过皮亚诺公理看自然数
  6. 拿不到 offer 免费学 | 廖雪峰的“大数据分析全栈工程师”课程第11期开始招生...
  7. 移动端手机、短信弹窗
  8. dbms_DBMS的组件
  9. MySql下载版本选择
  10. 2015061208 - 杀人漫画