Java Api实现Elasticsearch的滚动查询

解决ES每次只能查询一万条数据的问题

	@Overridepublic List<ESHandleDto> getVisitorsNum(String startTime, String endTime, String schoolName, String typeFunction) throws IOException {List<ESHandleDto> esHandleDtos = new ArrayList<>();SearchRequest searchRequest = new SearchRequest();searchRequest.indices(ElasticEnum.FUNCTIONLOG_INDEX.getValue());SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();if (StringUtils.hasText(schoolName)) {boolQueryBuilder.must(QueryBuilders.termQuery("schoolName.keyword", schoolName));}if (StringUtils.hasText(typeFunction)) {boolQueryBuilder.must(QueryBuilders.termQuery("typeFunction.keyword", typeFunction));}if (StringUtils.hasText(startTime) && StringUtils.hasText(endTime)) {boolQueryBuilder.must(QueryBuilders.rangeQuery("createDate").gte(startTime + "T00:00:00.000Z").lte(endTime + "T23:59:59.000Z"));}BoolQueryBuilder shouldQuery = QueryBuilders.boolQuery();shouldQuery.should().add(QueryBuilders.termQuery("description.keyword", "查询学生信息表"));shouldQuery.should().add(QueryBuilders.termQuery("description.keyword", "获取学校访客数据"));boolQueryBuilder.must(shouldQuery);sourceBuilder.sort("_doc", SortOrder.DESC);sourceBuilder.size(10000);sourceBuilder.query(boolQueryBuilder);searchRequest.scroll(TimeValue.timeValueMinutes(1));searchRequest.source(sourceBuilder);
//        System.out.println(sourceBuilder.toString());SearchResponse searchResponse = null;try {searchResponse = esConfig.restHighLevelClient().search(searchRequest, RequestOptions.DEFAULT);} catch (Throwable e) {throw new RuntimeException(e);}scrollHandle(searchResponse, esConfig, esHandleDtos, startTime, endTime);return esHandleDtos;}public static void scrollHandle(SearchResponse searchResponse, ESConfig esConfig, List<ESHandleDto> esHandleDtos, String startTime, String endTime) {SearchHits hits = searchResponse.getHits();String scrollId = searchResponse.getScrollId();SearchHit[] searchHits = hits.getHits();//对结果集处理List<FunctionLogElasticEntity> functionLogs = ESUtil.convertToFunctionLog(searchHits);visitorsResultHandle(functionLogs, esHandleDtos, ESUtil.isMoreThanMonth(startTime, endTime));//滚动查询部分,将从第10001笔数据开始while (searchHits != null && searchHits.length > 0) {SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId);searchScrollRequest.scroll(TimeValue.timeValueMinutes(1));try {searchResponse = esConfig.restHighLevelClient().scroll(searchScrollRequest, RequestOptions.DEFAULT);} catch (Throwable e) {throw new RuntimeException(e);}scrollId = searchResponse.getScrollId();hits = searchResponse.getHits();searchHits = hits.getHits();//对结果集处理functionLogs = ESUtil.convertToFunctionLog(searchHits);visitorsResultHandle(functionLogs, esHandleDtos, ESUtil.isMoreThanMonth(startTime, endTime));}//清除滚动,否则影响下次查询ClearScrollRequest clearScrollRequest = new ClearScrollRequest();clearScrollRequest.addScrollId(scrollId);ClearScrollResponse clearScrollResponse = null;try {clearScrollResponse = esConfig.restHighLevelClient().clearScroll(clearScrollRequest, RequestOptions.DEFAULT);} catch (IOException e) {throw new RuntimeException(e);}boolean succeeded = clearScrollResponse.isSucceeded();System.out.println(succeeded);}

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

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

相关文章

spring cloud智慧工地源码(项目端+监管端+数据大屏+APP)

spring cloud智慧工地源码&#xff08;项目端监管端数据大屏APP&#xff09; 系统功能介绍 【智慧工地PC项目端功能总览】 一.项目人员管理 包括&#xff1a;信息管理、信息采集、证件管理、考勤管理、考勤明细、工资管理、现场统计、WIFI教育、工种管理、分包商管理、班组管…

STM32 HAL 驱动PM2.5传感器(GP2Y10AU气体检测模块)

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 ADC外设配置 2.3 串口外设配置 2.4 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 ADC数据采集 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机通过HAL库方式对G…

RxJava的前世【RxJava系列之设计模式】

一. 前言 学习RxJava&#xff0c;少不了介绍它的设计模式。但我看大部分文章&#xff0c;都是先将其用法介绍一通&#xff0c;然后再结合其用法&#xff0c;讲解其设计模式。这样当然有很多好处&#xff0c;但我个人觉得&#xff0c;这种介绍方式&#xff0c;对于没有接触过Rx…

Qt 使用QLabel的派生类实现QLabel的双击响应

1 介绍 在QLabel中没有双击等事件响应&#xff0c;需要构建其派生类&#xff0c;自定义信号(signals)、重载事件函数(event)&#xff0c;最后在Qwidget中使用connect链接即可&#xff0c;进而实现响应功能。 对于其余没有需求事件响应的QObject同样适用。 此外&#xff0c;该功…

【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?

本文包含如下内容: ① 通过图解+源码分析/A1/B1/node1和 /A1/B2/node2 这两个节点的网络距离怎么算出来的 ② 客户端读文件时,副本的优先级。(怎么排序的,排序规则都有哪些?) ③ 我们集群发现的一个问题。 客户端读时,通过调用getBlockLocations RPC 获取文件的各个块。…

spring框架自带的http工具RestTemplate用法

1. RestTemplate是什么&#xff1f; RestTemplate是由Spring框架提供的一个可用于应用中调用rest服务的类它简化了与http服务的通信方式。 RestTemplate是一个执行HTTP请求的同步阻塞式工具类&#xff0c;它仅仅只是在 HTTP 客户端库&#xff08;例如 JDK HttpURLConnection&a…

python 相关框架事务开启方式

前言 对于框架而言&#xff0c;各式API接口少不了伴随着事务的场景&#xff0c;下面就列举常用框架的事务开启方法 一、Django import traceback from django.db import transaction from django.contrib.auth.models import User try:with transaction.atomic(): # 在with…

利用appium抓取app中的信息

一、appium简介 二、appium环境安装 三、联调测试环境 四、利用appium自动控制移动设备并提取数据

nginx location的执行规则和root/alias的区分

nginx location的执行规则和root/alias的区分 总结 看本篇文章不是教如何从0编写nginx配置&#xff0c;而是看懂已存在的nginx配置。 官方文档定义&#xff1a;location [ | ~ | ~* | ^~ ] uri { … } &#xff1a;严格匹配&#xff0c;且匹配成功则不继续往下&#xff0c;优…

【openGauss】分区表的介绍与使用

一、openGauss分区表介绍 在openGauss中&#xff0c;数据分区是在一个节点内部对数据按照用户指定的策略做进一步的水平分表&#xff0c;将表中的数据按照指定方式划分为多个互不重叠的部分。 对于大多数用户使用场景&#xff0c;分区表和普通表相比具有以下优点&#xff1a; …

年轻代频繁GC ParNew导致http变慢

背景介绍 某日下午大约四点多&#xff0c;接到合作方消息&#xff0c;线上环境&#xff0c;我这边维护的某http服务突然大量超时&#xff08;对方超时时间设置为300ms&#xff09;&#xff0c;我迅速到鹰眼平台开启采样&#xff0c;发现该服务平均QPS到了120左右&#xff0c;平…

希尔排序——C语言andPython

前言 步骤 代码 C语言 Python 总结 前言 希尔排序&#xff08;Shell Sort&#xff09;是一种改进的插入排序算法&#xff0c;它通过将数组分成多个子序列进行排序&#xff0c;逐步减小子序列的长度&#xff0c;最终完成整个数组的排序。希尔排序的核心思想是通过排序较远距…

SQL server 异地备份数据库

异地备份数据库 1.备份服务器中设置共享文件夹 2.源服务器数据库中添加异地备份代理作业 EXEC sp_configure show advanced options, 1;RECONFIGURE; EXEC sp_configure xp_cmdshell, 1;RECONFIGURE; declare machine nvarchar(50) 192.168.11.10 --服务器IP declare pa…

中科驭数亮相DPU峰会,分享HADOS软件生态实践和大数据计算方案,再获评“匠芯技术奖”

又是一年相逢时&#xff0c;8月4日&#xff0c;第三届DPU峰会在北京开幕&#xff0c;本届峰会由中国通信学会指导&#xff0c;江苏省未来网络创新研究院主办&#xff0c;SDNLAB社区承办&#xff0c;以“智驱创新芯动未来”为主题&#xff0c;沿袭技术创新、生态协同的共创效应&…

Vue-1.零基础学习Vue

当你从零开始学习 Vue.js 时&#xff0c;以下步骤可以帮助你系统地学习这个前端框架&#xff1a; 了解前端基础&#xff1a; 如果你对前端开发还不熟悉&#xff0c;可以先了解 HTML、CSS 和 JavaScript 的基础知识。这将为学习 Vue.js 奠定基础。 Vue.js 官方文档&#xff1…

【打印整数二进制的奇数位和偶数位】

打印整数二进制的奇数位和偶数位 1.题目 获取一个整数二进制序列中所有的偶数位和奇数位&#xff0c;分别打印出二进制序列 2.题目分析 打印一个整数的二进制位中的偶数位和奇数位&#xff0c;可以对整数进行移位操作&#xff0c;再将移位的二进制位与1进行&操作。 按位&a…

word将mathtype公式批量转为latex公式

最近&#xff0c;由于工作学习需要&#xff0c;要将word里面的mathype公式转为latex公式。 查了查资料&#xff0c;有alt\的操作&#xff0c;这样太慢了。通过下面链接的操作&#xff0c;结合起来可以解决问题。 某乎&#xff1a;https://www.zhihu.com/question/532353646 csd…

基于BNC和RTKLIB的GNSS组件包-星历设计

星历模块 主要包括如下&#xff1a;星历本身的数据结构&#xff0c;星历的编码解码和 rinex格式的文件读写等功能 星历分析工具主要包括&#xff1a;对应卫星更新 每个卫星星历的健康标记序列&#xff0c;星历的位置序列图 各个模块的组件图&#xff1a; class Eph { public:…

datePicker一个或多个日期组件,如何快捷选择多个日期(时间段)

elementUI的组件文档中没有详细说明type"dates"如何快捷选择一个时间段的日期&#xff0c;我们可以通过picker-options参数来设置快捷选择&#xff1a; <div class"block"><span class"demonstration">多个日期</span><el…

【Azure】office365邮箱测试的邮箱账号因频繁连接邮箱服务器而被限制连接 引起邮箱显示异常

azure微软office365邮箱会对频繁连接自身邮箱服务器的IP地址进行&#xff0c;连接邮箱服务器IP限制&#xff0c;也就是黑名单&#xff0c;释放时间不确定&#xff0c;但至少一天及以上。 解决办法&#xff0c;换一个IP&#xff0c;或者新注册一个office365邮箱再重试。 以下是…