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

随机推荐

  • 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