我在尝试运行连接到 elasticsearch 的应用程序时收到此错误消息.
I'm getting this error message while trying to run an application which connects to elasticsearch.
An attempt was made to call the method org.elasticsearch.client.RestHighLevelClient.<init>(Lorg/elasticsearch/client/RestClientBuilder;)V but it does not exist. Its class, org.elasticsearch.client.RestHighLevelClient, is available from the following locations: jar:file:/path/application/target/application-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/elasticsearch-rest-high-level-client-5.6.3.jar!/org/elasticsearch/client/RestHighLevelClient.class It was loaded from the following location: jar:file:/path/application/target/application-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/elasticsearch-rest-high-level-client-5.6.3.jar!/ Action: Correct the classpath of your application so that it contains a single, compatible version of org.elasticsearch.client.RestHighLevelClient应用程序构建没有错误,我的 maven 存储库中只存在一个版本的 elasticsearch SDK.
The application builds without errors and only one version of elasticsearch SDK exists in my maven repository.
这是我的 pom 的相关部分:
This is the relevant portion of my pom:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath /> </parent> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.6.3</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>5.6.3</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>5.6.3</version> <exclusions> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> </exclusion> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> </exclusions> </dependency>这是我在运行应用程序时遇到的异常:
This is the exception that I get while running the application:
org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.RestHighLevelClient]: Factory method 'restHighLevelClient' threw exception; nested exception is java.lang.NoSuchMethodError: org.elasticsearch.client.RestHighLevelClient.<init>(Lorg/elasticsearch/client/RestClientBuilder;)V这是我初始化 RestHighLevelClient 的方式:
This is how I'm initializing the RestHighLevelClient:
RestClientBuilder builder = RestClient .builder(new HttpHost(hostname, port, scheme)); builder.setMaxRetryTimeoutMillis(timeout); RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder.build()); 推荐答案Spring boot 会尝试自动配置 elasticsearch,它会在内部使用 elastic 6RestHighLevelClient(org.elasticsearch.client.RestClientBuilder builder) 来创建弹性客户端.如果您想连接到旧版本的 elasticsearch,请排除 elasticsearch 自动配置.
Spring boot will try to autoconfigure elasticsearch which will internally use elastic 6 RestHighLevelClient(org.elasticsearch.client.RestClientBuilder builder) to create the elastic client. If you want to connect to an older version of elasticsearch please exclude elasticsearch autoconfiguration.
@EnableAutoConfiguration(exclude={ElasticsearchAutoConfiguration.class, RestClientAutoConfiguration.class})更多推荐
Elasticsearch java 客户端初始化失败
发布评论