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样本册…

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

管理员账户功能包括&#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…

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

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

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

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

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

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

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

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

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

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

北斗三号多模对讲机TD70:公专网融合、数模一体、音视频调度,推动应急通信效能升级

随着国家对应急通信和精准定位技术的重视程度不断提高&#xff0c;相关技术和设备的研发与应用也得到了迅猛发展。特别是在边防巡逻、林业巡防、海上作业等领域&#xff0c;通信设备的可靠性和功能性直接关系到人员的生命安全和任务的成功完成。 近年来&#xff0c;我国政府高度…

深度学习500问——Chapter17:模型压缩及移动端部署(1)

文章目录 17.1 模型压缩理解 17.2 为什么需要模型压缩和加速 17.3 模型压缩的必要性及可行性 17.4 目前有哪些深度学习模型压缩方法 17.4.1 前段压缩和后端压缩对比 17.4.2 网络剪枝 17.4.3 典型剪枝方法对比 17.4.4. 网络蒸馏 17.4.5 前端压缩 17.4.6 后端压缩 深度神经网络在…

A股收复3000点!外资积极看涨,对冲基金净买入量创三年来新高

9月27日&#xff0c;A股开盘后跳空上涨&#xff0c;连续四天的大幅上涨&#xff0c;9月26日&#xff0c;上证指数收复3000点大关&#xff0c;让一些温州股民感到兴奋不已&#xff0c;一些炒股群里沸腾了。但对于行情走势&#xff0c;股民们产生了分歧&#xff0c;有人是逢高减仓…

高防服务器有用吗?租用价格一般多少

高防服务器有用吗&#xff1f;有用。高防服务器是一种具备高度防御能力的服务器&#xff0c;主要用于应对DDoS攻击、CC攻击等网络威胁。它通过专业的硬件设备和先进的防御算法&#xff0c;为用户提供持续、稳定的网络安全防护。高防服务器的主要特点包括强大的防御能力、低延迟…

【Koa】初识 Koa

1. Koa 特点 1.1 更好的处理异步 Koa 的核心设计是基于 async/await 异步编程模型。这使得 Koa 可以更好地处理异步操作&#xff0c;相比于传统的回调方式&#xff0c;代码更清晰且更易于维护。 1.2 无内置中间件 与 Express 不同&#xff0c;Koa 并没有内置任何中间件&…