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取值 的相关文章

  • 在 JRE 级别限制密码套件

    我们的 Java 应用程序公开了许多不同的接口 SMTP FTP HTTP 并通过 SSL TLS 进行保护 现在的目标是限制这些接口上允许的密码套件仅包含 强 密码套件 我已经有了一个列表 并且很清楚如何使其适用于特定套接字 socket
  • 点击 Java Web 服务:curl 或 URLConnection

    我使用的 Java 服务器在以下 URL 上公开 RESTful API http localhost 8080 my server 文档建议使用curl用于提交简单的PUT请求 文件上传 并强烈建议用户使用与示例中提供的完全相同的参数 所
  • 如何在 Spring 中从 application.properties 重新加载 @Value 属性? [复制]

    这个问题在这里已经有答案了 我有一个spring boot应用 在run文件夹下 有一个额外的配置文件 dir config application properties 当应用程序启动时 它使用文件中的值并将它们注入到 Value my
  • 行类型 Spark 数据集的编码器

    我想写一个编码器Row https spark apache org docs 2 0 0 api java index html org apache spark sql Row html输入 DataSet 用于我正在执行的地图操作 本
  • Chrome 崩溃:尝试在空对象引用上调用虚拟方法“long android.view.accessibility.AccessibilityNodeInfo.getSourceNodeId()”

    在处理网页的搜索表单 JavaScript CSS HTML 时 每次单击网络搜索图标并且输入字段获得焦点时 Chrome 浏览器 Android 10 都会崩溃 崩溃报告中的调试堆栈跟踪显示 Attempt to invoke virtu
  • Java 7 中的 Beans Binding 将被什么取代?

    我在某处读到 我忘记了链接 Beans Binding 将不会成为 Java 7 的一部分 有人知道什么会取代它吗 另外 当前版本的 Java 中是否有 Bean 绑定的替代方案 我建议JGoodies 绑定 https binding d
  • GAE 上奇怪的 500 错误

    我今天开始在我的应用程序上收到此错误 根本不记得更改任何内容 每当我在本地尝试时它都工作正常 但部署后我会收到此错误 EXCEPTION java lang ClassNotFoundException se myApp server My
  • 在 Java 中对多语言环境字符串进行排序

    我正在尝试按字符串字段 国家 地区 对对象列表进行排序 每个国家 地区都使用其母语 阿根廷 澳大利亚 奥地利 例如 我想要做的是让 出现在 A 国家之后 因为字母 对应于拉丁语 B 我正在尝试使用默认的 Collat er 但非拉丁名称仍然
  • Spring 应用程序启动前的 Spring Boot 设置日志记录

    我有一个项目 在启动 SpringApplication 之前需要日志记录机制 我怎样才能做到这一点 我尝试设置自己的日志记录机制 LogManager getLogManager readConfiguration 但在 Spring 应
  • Java 应用程序可以检测到调试器已连接吗?

    我知道 jvm 启动选项可以让 jvm 等待附加调试器 这不是我在这里的意思 是否有可能从 Java 代码中也检测调试器的附件 以便我可以例如编写一个正在执行某些操作的 脚本 然后在某个时刻让我的应用程序等待调试器 不会 这些选项是 JVM
  • 如何在 JAVA servlet 中处理压缩 (gzip) HTTP 请求(不是响应) - 简单示例?

    我为这个问题苦苦挣扎了很长一段时间 在找到一个简单的解决方案后 想问一个问题和答案 这个问题在堆栈溢出时以不同的方式被多次提出 并且accepted solutions是partially correct and complex或谈论res
  • 为什么 Java 类加载器找不到我的接口?

    在下面的代码中 我使用动态生成一个类sun tools javac Main 我将使用反射创建此类的新实例 问题是 我想避免使用 Reflection 来调用我为此类定义的方法 因此我创建了一个 ProxyInvoker 来引用我在项目中定
  • 从 Java 中的泛型类型推断泛型类型(编译时错误)

    我有一个带有以下泛型类型签名的静态函数T public static
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • 更新 Maven 项目模块中的父版本

    我有一个奇怪的场景 我有一个项目 Y 它有一个模块 X 和一些其他模块 X 是项目 Y 的一部分 但它不作为该项目的模块链接 因此 每次发布 Y 的新版本时 都需要有人手动更新 X 中的父版本 我需要以这样的方式更新 Y 项目 a 每次发布
  • 线程缓存和 Java 内存模型

    我正在尝试了解 Java 内存模型和线程 据我了解 每个线程都有 主 内存的本地副本 因此 如果一个线程尝试更改int变量 例如某个对象的变量 它会缓存int变量 如果它更改它 其他线程可能看不到更改 但是如果线程缓存一些对象而不是 int
  • JFrame 类型的方法 ... 未定义

    我正在尝试制作一个带有两个菜单列表的 gui 每个菜单列表有 3 个项目 我的问题是 当我单击某个项目时 出现错误 JFrame 类型的方法 displayList int AirplaneList 未定义 AirplaneControll
  • javaFX,抛出 NullPointerException,位置是必需的

    我看过其他答案 但没有任何帮助我 抱歉 GUI新手只知道swing的基础知识 这是主课 package application import javafx application Application import javafx fxml
  • JVM 调试端口 7779 正在使用

    我正在使用 RAD 8 当我在调试模式下启动服务器时 它会显示一条错误消息 指出JVM debug port 7779 is in use 我多次遇到这个问题 因为我知道 RAD 使用了这个端口 所以我不得不停止这个过程窗口任务管理器 gt

随机推荐

  • 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