热门标签 | 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



推荐阅读
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
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社区 版权所有