Es 聚合查询 nested分组聚合时无需指定字段类型

news/2024/4/18 13:38:53/文章来源:https://blog.csdn.net/qq_37158147/article/details/130353165
  1. 查询某个字段值出现的topn

                查询城市top5

  AggregationBuilder aggregationBuilder = AggregationBuilders.terms("value_count").field("neste.cityId").size(5);NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("nested的字段名", "nested的字段名").subAggregation(aggregationBuilder);searchSourceBuilder.aggregation(nestedAggregationBuilder);

      2.nested分组聚合查询

        

  AggregationBuilder provinceTermsBuilder= AggregationBuilders.terms("top5").field("nestedTouristList.cityId").subAggregation(touristCount).order( BucketOrder.aggregation("touristCount", false));//在最外层的查询将agg聚合设置进去,并且使用nestedNestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("nestedTouristList", "nestedTouristList").subAggregation(provinceTermsBuilder);

        

行程单索引,一个订单对应多个游客,将游客信息采用nested类型存入订单索引中

{"mappings": {"_doc": {"properties": {//oid"oid": {"type": "keyword"},"routeName": {"type": "keyword"},"nestedTouristList": {"type": "nested","properties": {"oid": {"type": "keyword"},"itineraryId": {"type": "long"},"certificateNo": {"type": "keyword"},"certificateNoEncrypt": {"type": "keyword"},"certificateType": {"type": "keyword"},"name": {"analyzer": "whitespace","type": "text"},"nameEncrypt": {"type": "keyword"},"phone": {"type": "keyword"},"phoneEncrypt": {"type": "keyword"},"gender": {"type": "keyword"},"age": {"type": "keyword"},"sourceAddress": {"type": "keyword"},"sourceAddressName": {"type": "keyword"},"provinceId": {"type": "keyword"},"cityId": {"type": "keyword"}}}}}

实列:

统计游客来源地top5

方式一:

 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询条件
searchSourceBuilder.query(nestedQueryBuilder);
//统计数量
ValueCountAggregationBuilder touristCount = AggregationBuilders.count("touristCount").field("nestedTouristList.oid");
//分组条件
AggregationBuilder provinceTermsBuilder= AggregationBuilders.terms("top5").field("nestedTouristList.cityId").subAggregation(touristCount).order( BucketOrder.aggregation("touristCount", false));//在最外层的查询将agg聚合设置进去,并且使用nested
NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("nestedTouristList", "nestedTouristList").subAggregation(provinceTermsBuilder);searchSourceBuilder.aggregation(nestedAggregationBuilder);//取数据
Aggregations brandNameAggregations = searchResponse.getAggregations();ParsedNested brandDataNested = brandNameAggregations.get("nestedTouristList");Aggregations brandDataNestedAggregations = brandDataNested.getAggregations();Terms cityTerms = brandDataNestedAggregations.get("top5");for (Terms.Bucket cityTermsBucket : cityTerms.getBuckets()) {Aggregations aggregationsSon = cityTermsBucket.getAggregations();String keyAsString = cityTermsBucket.getKeyAsString();long docCount = cityTermsBucket.getDocCount();ParsedValueCount brandSalesVolumeMax1 = aggregationsSon.get("touristCount");Long value = brandSalesVolumeMax1.getValue();System.out.println("cc" + value);}

方式二

//统计出现频数最多的前5条
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("value_count").field("nestedTouristList.cityId").size(5);NestedAggregationBuilder nestedAggregationBuilder = AggregationBuilders.nested("nestedTouristList", "nestedTouristList")
searchSourceBuilder.aggregation(nestedAggregationBuilder);

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

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

相关文章

QT中TCP的学习

文章目录 qt中TCP的实现 qt中TCP的实现 学习视频 QT中可以通过TCP协议让服务器和客户端之间行通信。服务器和客户端的具体流程 下方的信号都是系统提供的,我们只需要写相应的槽函数 A、服务器: 创建QTcpServer对象启动服务器(监听&…

【C语言】指针进阶[上] (字符、数组指针、指针数组、数组传参和指针传参)

简单不先于复杂,而是在复杂之后。 目录 1. 字符指针 面试题 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名 VS 数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二…

后端大厂面试总结大全六

目录: 1、Transactional注解控制事务有哪些不生效的场景2、MySQL的优化 1、Transactional注解控制事务有哪些不生效的场景 数据库引擎不支持事务数据源没有配置事务管理器没有被spring管理方法不是public的同一个类中方法调用,导致Transactional失效 举…

操作系统原理 —— 进程状态切换具体做了哪些事情?(八)

什么是进程控制? 进程控制的主要功能是:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简单来说,就是进程控制就是要现实进程状态的转换。 那如何实现进程的控制呢?…

手推FlinkML2.2(一)

Java 快速入门 # 本文档提供了一个关于如何使用Flink ML的快速入门。阅读本文档的用户将被指导提交一个简单的Flink作业,用于训练机器学习模型并提供预测服务。 求助,我卡住了!# 如果你遇到困难,请查看社区支持资源。特别是&…

Java线程间通信方式

前文了解了线程的创建方式和状态切换,在实际开发时,一个进程中往往有很多个线程,大多数线程之间往往不是绝对独立的,比如说我们需要将A和B 两个线程的执行结果收集在一起然后显示在界面上,又或者比较典型的消费者-生产…

【论文写作】如何写引言?应该思考什么问题?总体架构!!!

结构 大多数的科技论文都聚焦于简单地说明,做了什么,发现了什么?虽然这个可以帮助你写出一篇研究型论文当中的核心的东西(方法论和结果),但是不能完全把引言的部分完成。在这篇文章当中,将展示…

4 redis高可用

所谓的高可用,也叫HA(High Availability),是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果在实际生产中,如果redis只部署一个节点,…

从FMCW毫米波雷达系统的性能参数理解4D成像毫米波雷达的设计思路

本文编辑:调皮哥的小助理 站在设计雷达的角度看,其实无论是传统的3D毫米波雷达,还是如今的4D毫米波成像雷达,其雷达系统性能参数都遵循一个原则,即: d res ⋅ v res ⋅ θ res d max ⁡ ⋅ v max ⁡ ⋅ …

ESP8266通过MQTT协议连接onenet云平台

中国移动onenet平台 文章目录 中国移动onenet平台前言一、onenet平台二、ESP82661.完整代码2.联网代码3.连云代码4.数据处理 总结 前言 最近在弄onenet平台,用arduino结合esp8266,就是不知道怎么回事,一直连不上wifi,然后就用esp…

Linux下使用Mysql 第一天

目录 安装mysql 更改账户名和密码 启动/关闭mysql mysql的基本操作 数据库CURD 创建数据库 查看数据库 修改数据库 删除数据库 表的CURD 创建表 查看表 修改表 删除表 表数据的CURD create数据 Retrieve数据 update数据 delete数据 DML和DDL的区别&#xf…

高分辨率光学遥感图像水体分类综述2022.03

本文是Water body classification from high-resolution optical remote sensing imagery: Achievements and perspectives的学习笔记。 相关资源被作者整理到:这里 文章目录 Introduction基本知识 挑战和机遇挑战1. 有限的光谱信息和小场景覆盖2. 形状、大小和分布…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组(一维)1.1数组是什么?1.2java中数组静态初始化:(存)两种定义格式:数组初始化格式:静态初始化后,打印数组名: 1.3 数组元素访问&…

javaweb学生在线考试系统dzkf10程序

打分)、系统管理(数据备份)等功能操作。 以学生的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用个人资料管理、试卷查看、在线考试、在线答疑、个人考试成绩查询等功能…

Oracle的学习心得和知识总结(二十三)|Oracle数据库Real Application Testing之Database Replay相关视图

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

LVS负载均衡-DR

1.DR模式中每台主机都有一个VIP地址 虚拟网址放在lo网卡上(回环网卡) arp_ignore1 Arp_announce2 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址 2.内核参数修改 3.vim /etc/rc.conf 开机自启动 Chmod x /etc/rc.d…

【翻译一下官方文档】之uniapp的导航条设置

目录 uni.setNavigationBarTitle(OBJECT) uni.setNavigationBarColor(OBJECT) uni.hideHomeButton(OBJECT) uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。 OBJECT参数说明 参数类型必填说明titleString是页面标题successFunction否接口调用成功的回调函数fai…

卷积神经网络总结

1、卷积核 进行互相关运算。 卷积核的大小一般是奇数。 卷积核的本质类似于提取局部特征(过滤器),当层层卷积核叠加后,卷积核的感受野变大,卷积核的作用逐渐向提取全局抽象特征靠近。最后一层的神经元应该对整个输入…

SpringBoot中@EnableAsync和@Async注解的使用

目录 1.EnableAsync 注解1.1 配置类使用示例1.2 复制请求上下文 2.用法1:Async 注解2.1 测试Controller2.2 测试Service2.3 测试ServiceImpl2.4.测试 4.用法2:直接使用 taskExecutor 做异步4.1 重新实现:测试ServiceImpl4.2 测试 5.Async异步…

ArcGIS三体阴影(影像三维)显示马赛克?

我们经常基于ArcGIS通过DEM来做山体阴影 但是有时候你一放大就会出现很强的马赛克的效果 还有我们在利用ArcScene建三维场景 即使数据分辨率很高也会出现马赛克效果 那怎么来解决这个问题呢 让我们的山体阴影显示更加细腻 三维没有马赛克的效果呢? 右键图层选择如…