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

es的java调用

Elasticsearch Java 客户端调用方法

Elasticsearch 提供了两种主要的 Java 客户端调用方式:High Level REST Client(官方推荐)和 Java API Client(8.x 版本后新增)。以下分别介绍两种方式的使用方法。


High Level REST Client(7.x-8.x 兼容)

适用于 Elasticsearch 7.x 和 8.x 版本,需添加 Maven 依赖:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.17.0</version>
</dependency>

初始化客户端

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"))
);

索引文档

IndexRequest request = new IndexRequest("index_name").id("1").source("field1", "value1", "field2", "value2");
IndexResponse response = client.index(request, RequestOptions.DEFAULT);

搜索文档

SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("field1", "value1"));
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);


Java API Client(8.x+ 推荐)

Elasticsearch 8.x 推出的新客户端,需添加依赖:

<dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.12.0</version>
</dependency>

初始化客户端

RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)).build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
ElasticsearchClient client = new ElasticsearchClient(transport);

索引文档

Product product = new Product("1", "Elasticsearch Guide");
IndexResponse response = client.index(i -> i.index("products").id(product.getId()).document(product));

搜索文档

SearchResponse<Product> response = client.search(s -> s.index("products").query(q -> q.match(t -> t.field("name").query("Guide"))),Product.class);


通用注意事项

  1. 连接池管理:确保客户端单例化,避免重复创建。
  2. 异常处理:捕获 IOExceptionElasticsearchException
  3. 版本兼容性:客户端版本应与 Elasticsearch 服务端主版本号一致。
  4. 异步操作:两种客户端均支持异步调用(如 client.indexAsync())。

示例代码完整结构

// 关闭客户端(finally 块中调用)
client.close();

两种方式均可实现完整 CRUD 操作,8.x 用户建议优先使用新 Java API Client 以获得更好的类型安全和流畅 API 体验。

http://www.dtcms.com/a/398443.html

相关文章:

  • Jenkins运维之路(初次调试共享库)
  • 离线下载npm包
  • 【UE5.6.1】UE5初学者教程学习笔记:编辑器操作 (1-7集)
  • 伊春seo公司seo网站页面诊断
  • Spring依赖注入:@Resource与@Autowired详解及避免空指针的最佳实践
  • 52Hz——FreeRTOS学习笔记——延时函数
  • 阿里巴巴做网站教程免费网站模板下载大全下载
  • 贪心算法之分数背包问题
  • LLMs之AgentDevP:FastGPT的简介、安装和使用方法、案例应用之详细攻略
  • 贪心算法之船舶装载问题
  • 面试_常见大厂面试题
  • 网站地图怎么建设wordpress文章页样式修改
  • 网站如何做交互热门seo推广排名稳定
  • 【第29话:路径规划】自动驾驶启发式搜索算法(A星搜索算法( A* 搜索算法))详解及代码举例说明
  • React学习教程,从入门到精通,React Router 语法知识点及使用方法详解(28)
  • Docker Compose 从入门到实践
  • D3.js 与数据可视化
  • RNA-seq分析之最佳cutoff(TCGA版)
  • 浏览器直接进入网站的注意事项钢筋网片价格
  • scrapy-redis项目:爬取某网站图书信息
  • (论文速读)DiffBlender:可组合和通用的多模态文本到图像扩散模型
  • 第三方网站测试工具:【Postman使用基础指南】
  • Pytest+requests进行接口自动化测试5.0(5种assert断言的封装 + pymysql)
  • C# MVC 模型绑定全解析:从基础机制到自定义绑定器实战指南
  • 企业网站网页设计专业的团队网站建设
  • 网站建设可上传视频的wordpress 数据库类型
  • 广州南沙区建设和交通局网站个人建立网站要多少钱
  • Vue3 》》vite》》vite-plugin-mock mock 模拟数据 ,loadEnv
  • 宝塔面板搭建RustDesk教程:告别命令行,一键拥有私有远程桌面
  • Docker + IDEA 一键部署!