Elasticsearch 8.9版本无RestHighLevelClient,应使用何种API?
Elasticsearch 8.9+ 替代RestHighLevelClient的API及报错解决
替代API选择
Elasticsearch 8.0+ 官方已废弃并移除了RestHighLevelClient,推荐使用Elasticsearch Java Client作为替代。这是官方全新推出的客户端,基于Jakarta REST Client构建,支持所有Elasticsearch 8.x的功能,并且提供了类型安全的API调用体验。
解决NoSuchMethodError报错
你遇到的NoSuchMethodError本质是依赖版本不兼容或冲突导致的,即使修改了pom.xml版本,仍可能存在旧依赖残留或版本不一致问题,可按以下步骤解决:
- 彻底移除所有
org.elasticsearch.client:elasticsearch-rest-high-level-client相关依赖,确保项目中不再引入旧客户端包 - 添加Elasticsearch Java Client的正确依赖(以Maven为例):
<dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>8.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 需与Elasticsearch 8.9.0兼容 --> </dependency>
- 检查依赖树排查冲突:执行
mvn dependency:tree命令,找出所有与Elasticsearch相关的旧版本依赖,通过<exclusions>标签排除 - 确保所有Elasticsearch生态的依赖(如
org.elasticsearch:elasticsearch、org.elasticsearch.client:elasticsearch-rest-client等)版本统一为8.9.0,避免混合不同版本
新客户端基础使用示例
import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.json.jackson.JacksonJsonpMapper; import co.elastic.clients.transport.rest_client.RestClientTransport; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; public class ElasticsearchClientDemo { public static void main(String[] args) { // 创建底层RestClient RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200, "http")).build(); // 构建传输层,绑定JSON序列化器 RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); // 创建Elasticsearch客户端实例 ElasticsearchClient esClient = new ElasticsearchClient(transport); // 示例:执行搜索操作 /* try { SearchResponse<Map> response = esClient.search(s -> s .index("your_index") .query(q -> q .match(t -> t .field("content") .query("search keyword") ) ), Map.class); for (Hit<Map> hit : response.hits().hits()) { System.out.println(hit.source()); } } catch (IOException e) { e.printStackTrace(); } */ } }
内容的提问来源于stack exchange,提问作者yogesh shah
相关产品推荐
相关产品推荐

