热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

es分组聚合Aggnested

privatevoidtest(){第一组聚合,按brandDataNested的name分组这个size是一个可配置的精度TermsAggregationBuilderbrand


private void test(){
//第一组聚合,按brandDataNested的name分组
//这个size是一个可配置的精度
TermsAggregationBuilder brandNameAgg = AggregationBuilders.terms("brand")
.field("brandDataNested.name.keyword").size(10);
//第二组聚合,按name分组之后再使用sum求销额的和
String sumName = "brandSalesVolume";
SumAggregationBuilder brandSalesVolume = AggregationBuilders.sum(sumName).field("brandDataNested.salesVolume");
//第一组聚合中提交第二组聚合
brandNameAgg.subAggregation(brandSalesVolume);
//聚合排序,这里使用销额倒排
brandNameAgg.order(BucketOrder.aggregation(sumName, false));
//在最外层的查询将agg聚合设置进去,并且使用nested
NestedAggregationBuilder nestedAggregatiOnBuilder= AggregationBuilders.nested("brandDataNested", "brandDataNested")
.subAggregation(brandNameAgg);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//此处可以添加筛选语句
// searchSourceBuilder.query(query);
//聚合查询
searchSourceBuilder.aggregation(nestedAggregationBuilder);
//只返回聚合统计结果,不返回关联的具体文档
searchSourceBuilder.size(0);
SearchRequest request = new SearchRequest("live_room");
request.source(searchSourceBuilder);
try {
SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
//获取所有桶
Aggregations brandNameAggregatiOns= search.getAggregations();
ParsedNested brandDataNested = brandNameAggregations.get("brandDataNested");
Aggregations brandDataNestedAggregatiOns= brandDataNested.getAggregations();
Terms brandNameTerms = brandDataNestedAggregations.get("brand");
for (Terms.Bucket brandNameTermsBucket : brandNameTerms.getBuckets()) {
Aggregations aggregatiOnsSon= brandNameTermsBucket.getAggregations();
String keyAsString = brandNameTermsBucket.getKeyAsString();
long docCount = brandNameTermsBucket.getDocCount();
ParsedSum brandSalesVolumeMax1 = aggregationsSon.get(sumName);
double value = brandSalesVolumeMax1.getValue();
}
} catch (Exception e) {
}
}

  索引结构:

索引结构
{ "properties": {
"roomId": {
"type": "long"
},
"roomName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"brandDataNested": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"liveSales": {
"type": "long"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"productNum": {
"type": "long"
},
"salesVolume": {
"type": "long"
},
"sort": {
"type": "long"
}
}
}
}
}

  

 参考: https://blog.csdn.net/h321880947/article/details/126096440



推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
-54你懂不懂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有