ES多字段分组聚合(JAVA)

Elasticsearch聚合分析Java Client 本文基于Elasticsearch7.x 本文将上篇Elasticsearch聚合分析Rest API里的实例转化为Java Client Bucket Aggregation Bucket Aggregation是一系列满足特定条件的文档的集合, 类似于SQL语句里的分组功能. (1) main方法 public static void main(String[] args) throws... 阅读详情
/**
     * 多字段分组并求和;实现sql:select field1, field2, sum(field3) from table_name group by field1, field2;
     */
    public static void twiceAggSum(QueryBuilder query, String tableName, String groupField1, String groupField2, String sumField) {
        String group1_ = "group_" + groupField1;
        String group2_ = "group_" + groupField2;
        String sumField_ = "sum_" + sumField;

        //分组字段是id,排序由多个字段排序组成
        TermsAggregationBuilder tb1 = AggregationBuilders.terms(group1_).field(groupField1);
        TermsAggregationBuilder tb2 = AggregationBuilders.terms(group2_).field(groupField2);
        tb2.order(Terms.Order.compound(Terms.Order.aggregation(sumField_, false)));
        SumAggregationBuilder sb = AggregationBuilders.sum(sumField_).field(sumField);
        tb2.subAggregation(sb);
        tb1.subAggregation(tb2);
        SearchRequestBuilder search = client.prepareSearch(tableName);
        if (query != null) {
            search.setQuery(query);
        }
        search.addAggregation(tb1);
        Terms userAgg = search.get().getAggregations().get(group1_);
        for (Terms.Bucket entry : userAgg.getBuckets()) {
            Terms sexAgg = entry.getAggregations().get(group2_);
            for (Terms.Bucket entry2 : sexAgg.getBuckets()) {
                Sum sum = entry2.getAggregations().get(sumField_);
                System.out.println("cityCode:" + entry.getKey() + "	-------shopType:" + entry2.getKey() + "	----------sum:" + new BigDecimal(sum.getValue()).setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString());
            }
            System.out.println();
        }
    }
ElasticSearch实现GroupBy多字段分组统计 Es多字段分组,最佳尝试 阅读详情

相关推荐

ES常用语法(查询、排序、组合查询、聚合查询)

查询、组合查询、聚合查询、排序

大道至简 5344

ES多个字段group by操作

第一种方式 这种方式查询出来的数据不是扁平化的,而是一层套一层的,比如字段一套字段二。 GET 索引name/索引type/_search { "size": 0, "aggregations": { "字段一的结果命名": { "terms": { "field": "要group的字段" }, "aggregations": { "字段二的结果命名": { "terms": { "field": "要group的字段"

cainiao1412的博客 2万+

es7.1聚合查询 javaAPI

查询符合条件的数据量 /** * 查询符合条件的数据量 * * @param client RestHighLevelClient类型的连接对象 * @param queryBuilder 查询限制条件 可以为null * @return long * @throws IOException 查询数据抛出的异常 */ public long getAllCountForOneField(RestHighLevelClient client, QueryBu.

IT_arookie的博客 2944

es分组查询多个字段

es

Z17839192969的博客 4887

python设计俄罗斯方块(附源码)

【代码】python设计俄罗斯方块(附源码)

牧魂的博客 2059

《供应链金融风控模型设计:多维度数据整合与动态风险预警机制》

注:方案突出供应链金融「三流合一」(资金流、物流、信息流)的风控逻辑,通过多维度数据整合与动态预警,解决传统风控中中小企业信用评估难、链条风险传导监测滞后的问题。◦ 构建供应链拓扑图,计算「核心企业违约对上下游企业的影响系数」(如某电子厂商违约时,其前五大供应商的风险权重自动提升40%)• 区块链应用:将核心企业应付账款上链存证,防止「一票多融」欺诈(如某供应商用同一应收账款在多家银行融资)◦ 财务数据:核心企业审计报告、上下游企业纳税数据(增值税发票频次/金额)

2501_91651383的博客 1549

es java聚合方法——多字段分组并求和

/** * 多字段分组并求和;实现sql:select field1, field2, sum(field3) from table_name group by field1, field2; */ @Test public void sumAfterTwiceAgg() { SearchResponse response = client.prepareSearch(“twitter”).setTypes(“tweet”) .addAggregation(AggregationBuilders.terms

qq_43193797的博客 2203

告别PlatformIO!用Arduino IDE搞定ESP32上的micro-ROS 2.0.5(Humble版)

本文详细介绍了如何从PlatformIO迁移到Arduino IDE以支持ESP32上的micro-ROS 2.0.5(Humble版)。内容涵盖环境配置、项目转换、常见问题解决及高级优化技巧,帮助开发者顺利过渡并充分利用Arduino IDE的官方支持优势。

weixin_33709590的博客 378

Java调用ElasticSearch 7.2.1 保存、统计、多字段分组聚合

目录 maven引用 配置 配置类 保存数据方法 参照官方的引用方式会报错 分组统计 查询后再统计 多字段分组聚合 maven引用 注意版本与es版本一致 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>e...

草宝虫的博客 9489

深度学习模型设计的方法和技巧

设计神经网络模型是一个迭代的过程,需要不断试验和调整各个组成部分,以达到最佳性能。同时,遵循良好的工程实践,如模块化设计、版本控制、文档记录等,也是成功的关键。

xw555666的博客 4027

UNITY3D万人同屏,Dots万人同屏解决方案_类萌宠宠之战

UNITY3D弹幕游戏开发,万人同屏解决方案

6473

Java与Elasticsearch的API实现工具类(三)——聚合查询、多字段分组聚合、游标查询

相关代码已上传gitee仓库 https://gitee.com/gangye/elasticsearch_demo

gangye19970101的博客 1614

CPU 访问外设的两种核心机制:MMIO(Memory-Mapped I/O) 和 DMA(Direct Memory Access)

BAR和DMA是计算机系统中两种关键的数据传输机制:BAR(基址寄存器)用于CPU与设备间的控制通信,映射设备寄存器便于配置操作;而DMA(直接内存访问)允许设备直接读写系统内存,无需CPU参与大量数据传输。典型场景如NVMe SSD读取数据时,CPU通过BAR下发指令,设备通过DMA高效传输数据到主机内存,最后中断通知CPU。虽然BAR能映射大内存空间,但仍无法替代DMA的高效数据传输功能,两者各司其职——BAR负责控制,DMA专注数据传输,共同实现高性能的硬件交互。

MHD0815的博客 237

java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询过程解析...

这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下java连接elasticsearch 进行聚合查询进行相应操作一:对单个字段进行分组求和1、表结构图片:根据任务id分组,分别统计出每个任务id下有多少个文字标题1.SQL:select id, count(*) as ...

weixin_39883433的博客 446

硅基半导体量子点:单电子自旋量子比特技术手册

现在我们已经了解了从硅片到容错计算的全部环节,让我们用一张总览图把碎片拼成完整拼图。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;important;important;important;color:#000!important;important;important;important;important;color:#000!

VectorShift的博客 375

Python 爬虫实战:于好大夫在线抓取医生评价数据,选择优质医疗服务

requests:用于发送 HTTP 请求,获取网页内容。或 lxml:用于解析 HTML 页面,提取目标数据。pandas:用于数据清洗和分析。matplotlib和seaborn:用于数据可视化。time:用于控制爬取速度,避免对服务器造成压力。通过本项目,我们实现了以下目标:使用 Python 爬虫抓取好大夫在线的医生评价数据。对数据进行清洗和分析,找出评价中的关键词和趋势。根据分析结果推荐优质医疗服务。

u014481728的博客 3409

ES复杂分组同时多聚合统计实现(java)

前言 本来计划上一篇是最近的最后一篇,然后,这周手上还分的一点活,按照计划处理完成了,这会顺便跟大家分享下。 内容是java端操作ES做分组、聚合统计。 一、需求场景 其实需求也不复杂,就是一个红外感应的物联网设备进出都有统计上报流水,然后客户提出需要对这些数据进行统计,计算客流数量,进行展示。 二、需求分析 经过沟通确认,这个需求可以沉淀升级为一个通用的流水分组聚合统计接口。拆解结果,接口具体要求: 1、区分项目 2、租户下设备 (分组) 3、设备属性(分组) 4、统计类型 (平均值、求数目、求和)

zwrlj527的专栏 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

elastic java api 聚合_elasticsearch java聚合api

elasticsearchjava聚合api使用(多字段分组统计、聚合,最大最小值)// select sum(event_count),sourceip,destip,min(storagetime),max(storagetime) from index where event_rule_id = 'xxx' group by sourceip,destipClient client = ES...

weixin_39646688的博客 329

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Es Java多字段分组查询

es按照多个字段分组查询 GET /你的索引/_search { "size": 0, "aggregations": { "字段一的结果命名": { "terms": { "field": "startTime.keyword" }, "aggregations": { "字段二的结果命名": { "terms": { "field": "aa.keyword" } } } } } } java 代码实现:

weixin_49456013的博客 6089

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java分组语句_java使用elasticsearch分组进行聚合查询(group by)

java连接elasticsearch 进行聚合查询进行相应操作一:对单个字段进行分组求和1、表结构图片:根据任务id分组,分别统计出每个任务id下有多少个文字标题1.SQL:selectid,count(*)as sumfromtask groupbytaskid;java ES连接工具类public classESClientConnectionUtil {public stat...

weixin_35002851的博客 1228

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

es实现多字段聚合,实现类似count(case when的条件)的查询

s07aser123的专栏 1704

Elasticsearch多字段聚合

ES中的聚合被分为两大类:Metric和bucket。 在实际的开发工作过程中,会根据不同业务选择不同聚合总类。相对于REST的请求风格,javaApi方面的资料就比较欠缺。官方API都比较片面,实际应用中,要自己去多去尝试,多去组合验证。这点确实是比较累。 已近期的一个业务举例: 需求:根据用户ID来分组获取用户发布的微博,并统计微博的讨论量和转发量等等指标信息,还要根据不同指标信息做相...

iteye_15241的博客 1978

Java+springboot+elasticsearch7.6.2实现分组查询(平级+层级)并实现script多字段拼接查询以及大于小于等条件关系查询的实现

Java+springboot+elasticsearch7.6.2实现分组查询(平级+层级)并实现script多字段拼接查询 简介:关于elasticsearch的“层级”聚合,百度一下有一大堆文章。这里不再啰嗦了,由于百度了三个小时,也没找到我想要的"平级"查询的方法,最后还是自己研究源码整除来的,其实就是那么那么简单,只是没有例子,就不好整。上干货。 注:对es里的专业用语不熟,所以这里...

CaptainJava的博客 4410

java操作es聚合操作并显示其他字段_ElasticSearch java API - 聚合查询-聚合多字段聚合demo...

以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置。index的mapping为:"mappings": {"player": {"properties": {"name": {"index": "not_analyzed","type": "string"},"age": {"type": "integer"},"salary": {"type...

weixin_39824834的博客 986
上一篇: Linux 安装mysql
下一篇: 记录Jaeger
Alecor
博客等级 码龄11年 25粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值