es高级查询——多字段聚合

目录

1、需求 

2、es查询

3、java实现


1、需求 

查询需求类似下面sql:

select apiId,bmdm,avg(dyhs)  as avg_dyhs,count(cwm='0') as sbcs from tj_sjb

group by apiId,bmdm

2、es查询

POST /xx_doc/_search

{

    "query": {

        "bool": {

            "must": [],

            "must_not": [],

            "should": []

        }

    },

    "from": 1,

    "size": 0,

    "sort": [],

    "aggs": {

        "pre": {

            "terms": {

                "script": "doc['apiId'].value +'_'+ doc['bmdm'].value",

                "size": 1

            },

            "aggs": {

                "avg_dyhs": {

                    "avg": {

                        "field": "dyhs"

                    }

                },

                "count_sbcs": {

                    "filter": {

                        "term": {

                            "type": "0"

                        }

                    },

                    "aggs": {

                        "sbcs": {

                            "value_count": {

                                "field": "cwm"

                            }

                        }

                    }

                }

            }

        }

    },

    "track_total_hits": true

}

结果


{"took": 240,"timed_out": false,"_shards": {"total": 4,"successful": 4,"skipped": 0,"failed": 0},"hits": {"total": {"value": 133771,"relation": "eq"},"max_score": null,"hits": []},"aggregations": {"pre": {"meta": {},"doc_count_error_upper_bound": 5,"sum_other_doc_count": 93042,"buckets": [{"key": "02024080716254956700000101416459_BM800002232","doc_count": 40729,"count_sbcs": {"meta": {},"doc_count": 0,"sbcs": {"value": 0}},"avg_dyhs": {"value": 8530.576542512707}}]}}
}

3、java实现

private void esTj(Long startHourTime, Long endHourTime, String formatedTime) {Script script = new Script("doc['apiId'].value +'_'+ doc['bmdm'].value+'_'+ " +"doc['yyId'].value+'_'+ doc['apiYyId'].value");// es查询List<WdDytj> wdDytjList = new ArrayList<>(Constants.DEFAULT_SIZE);SearchRequest searchRequest = new SearchRequest(EsConstant.XX_DOC);AggregationBuilder termsBuilder = AggregationBuilders.terms("by_group").script(script).size(10000);AvgAggregationBuilder avgAggBuilder = AggregationBuilders.avg("avg_dyhs").field("dyhs");AggregationBuilder counSbcsAggBuilder = AggregationBuilders.filters("count_sbcs",new FiltersAggregator.KeyedFilter("sbcs",QueryBuilders.boolQuery().mustNot(QueryBuilders.termsQuery("cwm", "0"))));termsBuilder.subAggregation(avgAggBuilder).subAggregation(counSbcsAggBuilder);SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.aggregation(termsBuilder);BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("dysj").gte(startHourTime).lt(endHourTime);boolQuery.must(rangeQueryBuilder);searchSourceBuilder.query(boolQuery).size(0);searchRequest.source(searchSourceBuilder);// 执行es中的查询方法SearchResponse response = null;try {// 获取es中查询数据response = EsDynamicSource.getCurClient().search(searchRequest, RequestOptions.DEFAULT);// 取出es中的数据并且进行判断if (response != null) {Terms agg = response.getAggregations().get("by_group");if (agg != null) {for (Terms.Bucket bucket : agg.getBuckets()) {WdDytj wdDytj = new WdDytj();ParsedAvg avgDyhs = (ParsedAvg) bucket.getAggregations().asMap().get("avg_dyhs");ParsedFilters countSbcs = (ParsedFilters) bucket.getAggregations().asMap().get("count_sbcs");wdDytj.setDycs(bucket.getDocCount());wdDytj.setDyhs(avgDyhs.getValue());wdDytj.setSbcs(countSbcs.getBucketByKey("sbcs").getDocCount());wdDytj.setSjbs(formatedTime);String key = bucket.getKeyAsString();//apiId_bmdm_yyId_apiYyIdString[] keys = key.split("_");String now = String.valueOf(System.currentTimeMillis());wdDytj.setApiId(keys[0]);wdDytj.setApiYyId(keys[3]);wdDytj.setBmdm(keys[1]);wdDytj.setYyId(keys[2]);}}}} catch (Exception e) {}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

遥感图像语义分割数据集制作(使用ArcGIS Pro)

0. 引言 图像分割就是把图像空间按照一定的要求分成一些“有意义”的区域的技术叫图像分割。一幅图像通常是由代表物体的图案与背景组成&#xff0c;简称物体与背景。若想从一幅图像中“提取”物体&#xff0c;可以设法用专门的方法标出属于该物体的点&#xff0c;如把物体上的…

WebSocket实现在线聊天室

项目实现源码&#xff1a; 前端源码 后端源码 1.常见的消息推送方式 1.1 轮询 1.1.1 轮询的概念 客户端以固定的事件间隔&#xff08;例如每秒或几分钟&#xff09;向服务器发送HTTP请求&#xff0c;服务器收到请求后&#xff0c;处理请求并返回数据给客户端 轮询具体实现htt…

计算机毕业设计之:宠物服务APP的设计与实现(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

如何把PDF样本册转换为网址链接

​随着互联网的普及&#xff0c;将纸质或PDF格式的样本册转化为网址链接&#xff0c;以便于在线浏览和分享&#xff0c;变得越来越重要。本文将为您详细讲解如何将PDF样本册转换为网址链接&#xff0c;让您轻松实现线上展示和分享。 一、了解PDF样本册与网址链接 1. PDF样本册…

告别镜像下载慢?Docker镜像仓库配置与实战分享

Docker镜像仓库配置 安装Docker后配置镜像仓库&#xff0c;是为了通过优化镜像下载速度、增强安全性、支持离线环境、促进团队协作、满足特定需求以及优化资源利用&#xff0c;全面提升Docker应用的部署效率和整体管理水平。 检查Docker状态 # 启动docker的命令 [rootflexusx-…

游戏账号系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;卖家管理&#xff0c;游戏类别管理&#xff0c;游戏账号管理&#xff0c;站内联系管理&#xff0c;交易订单管理&#xff0c;帐号退货管理 微信端账号功能包括&#xff1a;系统首…

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测&#xff08;Matlab&#xff09; 目录 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测&#xff08;Matlab&#xff09;预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介…

数据结构:树的定义及其性质

树的定义 树是一种重要的非线性数据结构&#xff0c;树作为一种逻辑结构&#xff0c;同时也是一种分层结构。具有以下两个特点&#xff1a; 1.树的根结点没有前驱&#xff0c;除根结点意外的节点只有一个前驱 2.树中所有结点都可以有0个或多个后继 树结构在多个领域都有广泛…

GDB 调试

1. wsl 环境下搭建gdb&#xff1a; 1.1安装环境&#xff1a; #安装gcc编译器 (x86 linux) $ sudo apt install gcc #检查安装版本&#xff0c;看是否成功 $ gcc -v #安装gdb编译器 (x86 linux) $ sudo apt install gdb #检查安装是否成功 $ gdb 1.2 编写自己的程序&…

刷题学习日记 (1) - SWPUCTF

写这篇文章主要是想看看自己一个下午能干啥&#xff0c;不想老是浪费时间了&#xff0c;所以刷多少题我就会写多少题解&#xff0c;使用nss随机刷题&#xff0c;但是今天下午不知道为啥一刷都是SWPUCTF的。 [SWPUCTF 2021 新生赛]gift_F12 控制台ctrlf搜索flag即可&#xff0…

处理not in gzip format异常

1、为什么会触发这个异常&#xff1f; 当我们使用GZIPInputStream的read方法进行读取数据时&#xff0c;它会自动处理gzip格式的压缩数据&#xff0c;将它解析成原始的二进制数据。但是&#xff0c;如果你没有将原始数据进行gzip压缩后传入GZIPInputStream流&#xff0c;进行r…

语言的重定向

输入输出重定向是相当有意思的一门技术&#xff0c;比如有的人每个月的收入自动转10%到支付宝&#xff0c;20%进了老婆的账户。这么有效益的事情&#xff0c;基本所有的操作系统都支持&#xff0c;本质上它不是编程语言特性&#xff0c;编程语言只是为了更方便调用操作系统的重…

车载诊断技术:汽车健康的守护者

一、车载诊断技术的发展历程 从最初简单的硬件设备到如今智能化、网络化的系统,车载诊断技术不断演进,为汽车安全和性能提供保障。 早期的汽车诊断检测技术处于比较原始的状态,主要依靠操作经验和主观评价。随着汽车工业的发展,车载诊断技术也经历了不同的阶段。20 世纪初…

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台&#xff0c;集成了多种先进的视频质量诊断功能&#xff0c;其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…

在深度学习训练过程中模型为什么会学习到捷径

在深度学习训练过程中&#xff0c;模型学习到捷径&#xff08;shortcut learning&#xff09;通常是指模型没有学到问题的核心特征&#xff0c;而是利用数据中的某些简单模式、偏差或噪声来快速优化损失函数。这种现象会导致模型看似在训练和测试集上表现良好&#xff0c;但实际…

数据分析:线性回归计算嵌套的组间差异

文章目录 介绍加载依赖包导入数据数据预处理数据概览线性回归画图森林图的特点:森林图的作用:总结系统信息介绍 在统计学中,嵌套的组间差异分析是一种评估不同组别间差异的方法,尤其适用于层级结构或分组数据。通过线性回归模型,我们可以计算出各个变量对于因变量的影响,…

基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现

1. 引言 随着互联网技术的发展&#xff0c;人们获取信息的方式发生了巨大的变化。传统的新闻媒体逐渐向数字化、智能化方向发展。新闻推荐网站管理系统能够帮助新闻网站更好地管理和推荐新闻内容&#xff0c;提高用户体验。本文将详细介绍一个新闻推荐网站管理系统的整体设计与…

摩尔平台今日学习点

今天学习了修改前端代码&#xff0c;修复了很多东西&#xff0c;比如说修复了修改的回显以及弹出多选选择框修改成单选选择框&#xff0c;修改好修改没有回显的办法&#xff0c;然后我认为&#xff0c;修改sql语句的方法&#xff0c; 修改后的代码 package com.more.mes.wms.o…

《十年国庆游,洞察中国旅游新趋势》

作者&#xff1a;侯炯 一、十年国庆旅游数据总览 过去十年&#xff0c;中国国庆旅游市场呈现出丰富的变化和强劲的发展态势。从接待游客人次来看&#xff0c;2014 年接待国内游客 4.75 亿人次&#xff0c;到 2019 年已增长至 7.82 亿人次&#xff0c;2023 年国内旅游出游人数更…

9月27日,每日信息差

第一、中国科学家团队在干细胞治疗领域取得重要突破&#xff0c;通过化学重编程技术成功制备出胰岛细胞&#xff0c;并用于移植治疗一名 1 型糖尿病患者&#xff0c;实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…