ElasticSearch聚合查询返回结果buckets取值
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取值相关推荐
- php聚合查询,php elasticsearch 聚合查询(Aggregation)
Elasticsearch中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景. 这里主要介绍PHP Elasticsearch 聚合查询的写法,如果不 ...
- Elasticsearch聚合查询案例分享
为什么80%的码农都做不了架构师?>>> Elasticsearch聚合查询案例分享 1.案例介绍 本文包含三个案例: 案例1:统计特定时间范围内每个应用的总访问量.访问成功数 ...
- Elasticsearch聚合查询多字段设置权重
Elasticsearch聚合查询多字段设置权重 背景 环境说明 script设置权重 小结 背景 实际应用中,可能会需要为为doc文档中某个字段的某些特定的值设置权重,影响排序.es提供了比较灵活的 ...
- ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)
本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...
- java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)
PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...
- (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询
转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...
- ElasticSearch 聚合查询 JavaApi
ES 聚合查询Java Api 分页查询,按照时间进行分组查询求平均(多平均),按照某一字段分组求聚合等等 分页查询 SysUser loginUser = SecurityUtils.getLogi ...
- ES/ElasticSearch 聚合查询时报错:too_many_buckets_exception
环境:ElasticSearch6.7 问题描述: {"error": {"root_cause": [],"type": "se ...
- ElasticSearch 聚合查询
价格总和: 1,使用aggs 2,自己起个名字price_of_sum 3,求和sum 4,filed要求和的字段 GET /lib5/items/_search {"aggs&q ...
最新文章
- Python 技术篇-用request库调用莉莉机器人api接口实现与机器人对话实例演示
- Activity中UI框架基本概念
- QT学习:读写二进制文件
- click传值vue_对vue下点击事件传参和不传参的区别详解
- flatten的用法
- 《江城子·己卯正月二十日夜记梦》——苏轼
- Perl语言入门,第17章自写习题答案。
- 计算机代码编程知识,编程基础知识
- 智慧监狱UWB定位系统解决方案
- json转Java_在线JSON转Java实体类—在线工具
- java经典算法(一)——zws
- 手机短信验证码收不到怎么办?原因和解决方案全都在这里
- 磁盘管理之 raid 文件系统 分区
- 国内最好的五大广告聚合平台
- Python爬取链家网上的房源信息
- Eclipse安装( jdk安装以及环境配置教程 )
- 服务器芯片组 c242评测,完胜690!最详尽的C68G芯片组性能评测
- 日更100天(42)每天进步一点点
- PyTorch faster_rcnn之一源码解读一
- java图片轮播_java制作广告图片自动轮播控件
热门文章
- oracle awr使用方式,Oracle中AWR的使用
- linux修改smb端口,centos下smb配置
- 谢谢!yefuna@gmail.com
- 矩阵库eigen的用法(三)————求行列式值和三角分解求线性方程组的解
- 透过皮亚诺公理看自然数
- 拿不到 offer 免费学 | 廖雪峰的“大数据分析全栈工程师”课程第11期开始招生...
- 移动端手机、短信弹窗
- dbms_DBMS的组件
- MySql下载版本选择
- 2015061208 - 杀人漫画