当前位置: 首页 > article >正文

JAVA获取ES连接并查询所有数据

我们的项目要获取es连接,新版本和旧版本有不小的区别,在8.17.0版本使用的是

ElasticsearchClient
<dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.17.0</version> <!-- 使用最新版本 -->
</dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version>
</dependency>

初始化代码

File certFile = new File(caPath);SSLContext sslContext = TransportUtils.sslContextFromHttpCaCrt(certFile);BasicCredentialsProvider credsProv = new BasicCredentialsProvider();credsProv.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUserName, esPwd));RestClient restClient = RestClient.builder(new HttpHost(esHost, esPort, esHttpType)).setHttpClientConfigCallback(hc -> hc.setSSLContext(sslContext).setDefaultCredentialsProvider(credsProv).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)).build();ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());ElasticsearchClient client = new ElasticsearchClient(transport);

循环获取代码

SearchResponse<Object> searchResponse = client.search(searchRequest, Object.class);// 执行初始搜索List<Hit<Object>> hits = searchResponse.hits().hits();// 获取命中的文档列表String scrollId = searchResponse.scrollId();// 2. 循环获取所有结果boolean isEmpty = false;while (scrollId != null && !isEmpty) {String finalScrollId1 = scrollId;ScrollResponse<Object> scrollResponse = client.scroll(s -> s.scrollId(finalScrollId1).scroll(Time.of(b -> b.time("30s"))), Object.class);scrollId = scrollResponse.scrollId();List<Hit<Object>> scrollHits = scrollResponse.hits().hits();}// 最后清除 scroll 上下文String finalScrollId = scrollId;client.clearScroll(c -> c.scrollId(finalScrollId));client.close();writer.flush();writer.close();

重点关注循环获取数据的内容,通过AI搜索的不一定对,这是经过修改之后的。

http://www.lryc.cn/news/2403908.html

相关文章:

  • 408第一季 - 数据结构 - 线性表
  • 第23讲、Odoo18 邮件系统整体架构
  • 【QT面试题】(三)
  • DeepSeek09-open-webui使用
  • HarmonyOS:Counter计数器组件
  • 数据类型 -- 字符
  • WordZero:让Markdown与Word文档自由转换的Golang利器
  • sqlsugar WhereIF条件的大于等于和等于查出来的坑
  • Pandas 技术解析:从数据结构到应用场景的深度探索
  • 数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)
  • [c#]判定当前软件是否用管理员权限打开
  • 并发编程实战(生产者消费者模型)
  • 分布式微服务系统架构第144集:FastAPI全栈开发教育系统
  • el-tabs 切换时数据不更新的问题
  • git小乌龟不显示图标状态解决方案
  • 获取 OpenAI API Key
  • 【Android基础回顾】五:AMS(Activity Manager Service)
  • pycharm中提示C++ compiler not found -- please install a compiler
  • 类型别名与类型自动推导
  • 一站式直播工具:助力内容创作者高效开启直播新时代
  • 【学习笔记】Lamba表达式[匿名函数]
  • 学习笔记(26):线性代数-张量的降维求和,简单示例
  • 以智能管理为基础,楼宇自控打造建筑碳中和新路径
  • 81 实战一:给root目录扩容
  • 1130 - Host ‘xxx.x.xx.xxx‘is not allowed to connect to this MySQL server
  • HttpURLConnection实现
  • day029-Shell自动化编程-计算与while循环
  • Linux命令基础(2)
  • vue3 + vite实现动态路由,并进行vuex持久化设计
  • ThingsCloud事物云平台搭建-微信小程序