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

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.xdnf.cn/news/10864.html

相关文章:

  • RTP over TCP 模式
  • 如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • 4-C#的不同窗口传值
  • 洛谷P12610 ——[CCC 2025 Junior] Donut Shop
  • 转战海外 Web3 远程工作指南
  • (10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 双周报Vol.73:移除使用方法实现 trait 、新增了 “错误多态” 功能、.语法支持使用 _ 的匿名函数...
  • 16QAM在瑞利信道下的性能仿真:从理论到实践的完整解析(附完整代码)
  • 【HarmonyOS 5】鸿蒙Taro跨端框架
  • 【TMS570LC4357】之相关驱动开发学习记录1
  • 总结:线程安全问题的原因和解决方案
  • 初识vue3(vue简介,环境配置,setup语法糖)
  • LlamaIndex的IngestionPipeline添加本地存储(本地文档存储)
  • Unity 环境搭建
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(四)
  • Python中join()方法完全指南:参数要求与常见用法解析
  • 【深度学习新浪潮】以Dify为例的大模型平台的对比分析
  • 38、响应处理-【源码分析】-HTTPMessageConverter原理
  • C++.双指针算法(1.1目录修正)
  • CA-Net复现
  • 多租户系统的实现方式
  • 第四十天打卡
  • 统计字符数
  • 「Java教案」算术运算符与表达式
  • #16 学习日志软件测试
  • 论文写作核心要点
  • 《高等数学》(同济大学·第7版)第一章第四节《无穷小与无穷大》的超级详细
  • 如何提升大模型召回率和实战案例
  • 页岩油试油试采
  • 深入理解C++面向对象编程:类与对象全面指南