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

2023-10-27

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);
                        }

                    }
                });
            }
         });
最后成功取到聚合的值,如有更简便的方法,欢迎留言,谢谢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch聚合查询返回结果buckets取值 的相关文章

  • 如何找出导致 poi 损坏 xlsx / xlsm 文件的原因

    我遇到的问题是 Apache POI 仅通过读取和写入就 损坏 了 xlsm xlsx 文件 例如使用以下代码 public class Snippet public static void main String args throws
  • 如何在java中以编程方式访问网页

    有一个网页 我想从中检索某个字符串 为此 我需要登录 单击一些按钮 填充文本框 单击另一个按钮 然后就会出现字符串 我怎样才能编写一个java程序来自动执行此操作 是否有任何有用的库用于此目的 Thanks Try HtmlUnit htt
  • 连接所有 PostgreSQL 表并创建 Python 字典

    我需要加入allPostgreSQL 表并将它们转换为 Python 字典 数据库中有72张表 总列数大于1600 我编写了一个简单的 Python 脚本 该脚本连接多个表 但由于以下原因无法连接所有表内存错误 https gist git
  • setSize() 不起作用?

    我有一个程序 需要两个按钮 一个是常规按钮 另一个具有根据鼠标悬停而变化的图片 目前 由于图片很大 JButton自定义也很大 我可以更改自定义的大小并保持图像 和翻转图像 成比例吗 我尝试过 setSize 但它没有任何作用 对于任何反馈
  • Eclipse 调试“未找到源”

    我刚刚开始使用 Eclipse 所以慢慢来吧 但是 当尝试调试 JUnit 测试用例时 我会收到一个对话框 指出当我在测试方法中的代码中找到此行时 未找到源代码 Assert assertEquals 1 contents size 我知道
  • 如何实现可运行队列

    我正在尝试实现一个可运行队列 在异步任务期间依次执行 意味着队列中的下一个将在另一个完成后执行 我编写了一个管理器来管理这些可运行对象和本身就是可运行对象的任务 然后 我获取异步任务中的第一个任务并运行它 希望它能够在队列中运行 但是它最终
  • 由于 maven-surefire-plugin,Maven 构建失败

    我这里有类似的问题eclipse 中缺少 maven surefire plugin https stackoverflow com questions 23588957 maven surefire plugin missing in e
  • HTTPURLConnection 不遵循从 HTTP 到 HTTPS 的重定向

    我不明白为什么JavaHttpURLConnection不遵循从 HTTP 到 HTTPS URL 的 HTTP 重定向 我使用以下代码来获取页面https httpstat us https httpstat us import java
  • 将 Flash 文件上传与 JSF 集成

    我看到我们可以通过flash文件上传来上传多个文件 喜欢SWF上传 http code google com p swfupload or YUI上传器 http yuilibrary com yui docs uploader 是否可以将
  • 在 Spring Boot 异常处理期间保留自定义 MDC 属性

    简短版本 有足够的细节 如何保留添加在MDC中的属性doFilter 的方法javax servlet Filter执行 public void doFilter ServletRequest request ServletResponse
  • 处理大数据表时应该如何使用Hibernate Mapping

    问题定义 我有一个包含大量数据 超过 100 000 行 的数据库表 表结构如下 AppID DocID DocStatus 1 100 0 1 101 1 2 200 0 2 300 1 每个 applicationID 可能有数千个文档
  • 如何在Java中实现复合模式?

    我想实现一个复合模式Java以便绘制软件开发组织图 因此 我们假设有多个项目经理和多个开发人员 每个开发人员都被分配给一位项目经理 并且每个开发人员都能够使用各种编程语言进行编码 项目经理领导开发人员并准确了解他们的工作量 我对这个设计模式
  • 更改 WireMock __files 目录

    来自docs http wiremock org docs stubbing 要从文件中读取正文内容 请将文件放在 files 下 目录 默认情况下 这应该位于 src test resources 下 从 JUnit 规则运行时 当独立运
  • 如何在 jax-ws 客户端中隐藏(可能)由 jax-ws 库引起的警告

    我正在使用 netbeans 在我的应用程序中生成 Web 服务客户端 我的程序使用 jax ws 库来设置调用 Web 服务的超时 出现问题是因为每当我启动这个程序时它都会生成很多这样的警告消息 2010 年 12 月 13 日下午 4
  • 调整 Java 类以提高 CPU 缓存友好性

    在设计java类时 对于实现CPU缓存友好性有哪些建议 到目前为止我学到的是应该尽可能多地使用 POD 即 int 而不是整数 这样 在分配包含对象时 数据将被连续分配 例如 class Local private int data0 pr
  • AWS Lambda 和 S3 - 上传的 pdf 文件为空/损坏

    我有一个 Spring 应用程序 在 AWS Lambda 上运行 它获取文件并将其上传到 AWS S3 Spring控制器发送一个MultipartFile到我的方法 使用 Amazon API Gateway 将其上传到 AWS S3
  • JPA中如何连接多个数据库?

    我有一个 Spring Boot 应用程序 当前使用 JPA 连接到单个数据库 application properties 文件中的连接详细信息 spring datasource url jdbc oracle thin localho
  • 与 System.in.read() 一起使用的文件结尾/流键盘组合是什么

    如果这个小问题已经得到解答 我深表歉意 我无法在SO找到它 使用以下 Java 简单代码从 IDE 控制台读取行 Windows 7 和 Eclipse Kepler int v try while v System in read 1 S
  • 在java中加密字符串,在node.js中解密,错误:解密失败

    我正在尝试用 java 加密一个字符串 将其发送到我的 node js 服务器 然后解密 但是 当我尝试执行此操作时 尝试解密时会不断出现错误 Java加密 String privateKey someprivatekey String d
  • Spring Data JPA 存储库,具有规范、分页和标准 fetch-join

    我正在使用具有规范和分页功能的 Spring Data JPA 存储库实现实体列表的搜索 过滤服务 我正在尝试减少查询数量 n 1 问题 并使用条件获取机制获取嵌套数据 我有两个实体类 Entity Table name delegatio

随机推荐

  • Linux——会话、守护进程创建模型及代码实现

    会话 概念 多个进程组的集合 创建一个会话需要注意以下6点 调用进程不能是进程组组长 创建会话的创始人不能是进程组组长 该进程变成新会话首进程 session headler 该进程成为一个新进程组的组长进程 需有root权限 ubuntu
  • Ceph:ceph修复osd为down的情况

    ceph修复osd为down的情况 今天巡检发现ceph集群有一个osds Down了 通过dashboard 查看 ceph修复osd为down的情况 点击查看详情 可以看到是哪个节点Osds Down 了 通过命令查看Osds状态 查看
  • 高德地图key设置

    调试key 找到 keytool exe所在目录 在当前目录运行命令行工具 keytool exe list v keystore C Users 用户名 android debug keystore
  • [ C++ ] template 模板进阶 (特化,分离编译)

    本篇内容包括C 非典型模板参数 类模板的特化 模板的分离编译 C 模板简单概念及其使用大家可点击此链接 C C 之模板template 目录 1 数组模板示例和非类型模板参数 2 模板的特化 2 1什么是模板的特化 2 2 函数模板特化 2
  • nginx配置详解

    nginx进程 一般设置为和cpu核数一样 worker processes 4 错误日志存放目录 error log data1 logs error log crit 运行用户 默认即是nginx 可不设置 user nginx 进程p
  • 计算机专业毕业论文python毕业设计题目推荐基于Python实现的数据分析系统[包运行成功]

    文末获取联系 目录 一 项目介绍 二 文档截图 三 运行截图 四 源码获取 一 项目介绍 基于Python的数据分析系统的设计和实现 该项目采用技术Python的django框架 mysql数据库 项目含有源码 论文 PPT 配套开发软件
  • SQL DEFAULT约束

    SQL DEFAULT约束 一 说明 本文主要讲SQL 中的DEFAULT约束 插入默认值 二 所用工具 SQL 数据库 三 内容 1 DEFAULT约束说明 DEFAULT 约束用于向列中插入默认值 如果列中没有规定其他的值 那么会将默认
  • JavaScript使用技巧精萃

    一 确认删除用法 1 BtnDel Attributes Add onclick return confirm 确认删除 2 linktempDelete Attributes onclick javascript return confi
  • cuda的cublas库

    cublas库是在NVIDIA CUDA上实现blas 基本线性代数子程序 该库是已经封装好的 可以利用该库进行向量和矩阵的多种操作 cuBLAS包含了三部分 cuBLAS API 从cuda6 0开始 CUBLASXT API 从cuda
  • Unity:角色控制器(CharacterController)

    角色控制器是unity中专门用来控制角色的组件 主要是运动相关 区别于直接用Transform或者RigidBody CharacterController有着更好的效果 它拥有RigidBody的一些重要特性 但是又去掉了很多物理效果 这
  • matlab练习程序(白平衡<灰度世界算法>)

    clear all close all clc img imread Lena cai jpg imshow img mean1 mean mean img 1 mean2 mean mean img 2 mean3 mean mean i
  • C++---异常处理

    异常处理 异常处理 try语句块和throw表达式 异常的抛出和捕获 异常的抛出和匹配原则 异常安全 异常规范 标准异常 异常处理 异常是指存在于运行时的反常行为 这些行为超出了函数正常功能的范围 当程序的某部分检测到一个他无法处理的问题时
  • AcWing 3719. 畅通工程(并查集)(天津大学考研上机)

    输入样例 4 2 1 3 4 3 输出样例 1 include
  • 装jdk

    首先从官网上下载jdk安装包 如果后缀 i586 则是32位的 大部分电脑不要选 我们要选后缀X64的 这才是64位电脑应该选的 双击jdk 一路next 装好之后 还会弹出让你安装jre 因为jdk自带jre 所以这个jre装不装都行 装
  • 【经典】SpringBoot常用基本配置

    SpringBoot支持properties文件和yml文件 两个文件同时存在 优先以properties为准 通过properties文件配置 1 基本设置 server port 80 debug true server servlet
  • 超频到3200最佳时序_如何榨取更多CPU性能:CPU BIOS超频简单教程

    你为什么要超频 以前超频是可以换来性能的大幅度提升 但是近些年来超频带来的收益其实已经大幅降低 因为不论Intel还是AMD都已经把CPU的频率拉到接近极限 留给玩家的可超频空间其实不多 性能提升已经远没有以前明显 但是依然有不少人追求超频
  • STM32单片机初学者常用函数--I2C配置

    I2C的配置必须要按照其时序逻辑 首先先来了解I2C常见的几种工作情况 A 主机向从机发送数据 数据传输方向在整个传输过程中不变 B 主机在第一个字节后 立即从从机读数据 C 在传输过程中 当需要改变传输方向时 起始信号和从机地址都被重复产
  • MATLAB卡尔曼数字滤波惯性测量单元数据(行驶距离和速度估计)

    惯性测量单元 IMU 是惯性导航系统 INS 的一个组件 惯性导航系统是一种导航设备 用于在没有外部参考的情况下计算移动物体的位置 速度和方向 该项目开发了一种方法 用于消除加速度计测量中的偏差 并估计移动物体的行进距离和速度 估计是使用卡
  • linux 服务状态命令,Linux 查看服务列表,查看服务状态

    使用service查看命令说明 ubuntu VM 0 17 ubuntu service Usage service status all service name command full restart ubuntu VM 0 17
  • ElasticSearch聚合查询返回结果buckets取值

    ElasticSearch聚合查询返回结果buckets取值 1 聚合查询如下 size 0 query bool must wildcard county company keyword wildcard 3 boost 1