Springboot ElasticSearch配置错误
Springboot ElasticSearch Configuration Error
我尝试为 elasticsearchclient 编写配置,但我一直收到这样的错误:
应用程序启动失败
描述:
试图调用不存在的方法。尝试是从以下位置进行的:
co.elastic.clients.transport.rest_client.RestClientOptions.initialOptions(RestClientOptions.java:179)
不存在以下方法:
org.elasticsearch.client.RequestOptions$Builder.addHeader(Ljava/lang/String;Ljava/lang/String;)Lorg/elasticsearch/client/RequestOptions$Builder;
方法的 class、org.elasticsearch.client.RequestOptions$Builder 可从以下位置获得:
jar:file:/C:/Users/UtkuUslusoy/.m2/repository/org/elasticsearch/client/elasticsearch-rest-client/6.8.3/elasticsearch-rest-client-6.8.3.jar!/org/elasticsearch/client/RequestOptions$Builder.class
它是从以下位置加载的:
file:/C:/Users/UtkuUslusoy/.m2/repository/org/elasticsearch/client/elasticsearch-rest-client/6.8.3/elasticsearch-rest-client-6.8.3.jar
操作:
更正应用程序的 class 路径,使其包含 org.elasticsearch.client.RequestOptions$Builder
的单一兼容版本
@Configuration
public class ElasticsearchConfiguration {
private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfiguration.class);
@Bean
public ElasticsearchClient elasticsearchClient(
@Value(value = "${com.**.**.core.configuration.**.mappingFile}") String mappingFile,
@Value(value = "${com.**.**.core.configuration.**.indexName}") String indexName,
@Value(value = "${com.**.**.core.configuration.**.hostName}") String hostName,
@Value(value = "${com.**.**.core.configuration.**.port}") Integer port) throws IOException {
final RestClient restClient = RestClient
.builder(new HttpHost(hostName, port))
.build();
final ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
final ElasticsearchClient client = new ElasticsearchClient(transport);
final InputStream stream = new ClassPathResource(mappingFile).getInputStream();
final CreateIndexRequest request = new CreateIndexRequest.Builder().index(indexName).withJson(stream).build();
try { client.indices().create(request); } catch (Throwable exception) { /* Intentionally left blank */ }
if (logger.isDebugEnabled()) logger.debug("Elasticsearch initialization complete");
return client;
}
}
Springboot版本:2.2.0.RELEASE
pom.xml:
<dependencies>
<!-- https://mvnrepository.com/artifact/co.elastic.clients/elasticsearch-java -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<!-- Needed only if you use the spring-boot Maven plugin -->
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-amqp -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.**.**</groupId>
<artifactId>aml-core</artifactId>
<version>${**.aml.version}</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<elasticsearch-version>7.17.2</elasticsearch-version>
</properties>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.17.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.17.2</version>
</dependency>
将这些添加到您的 pom。
我尝试为 elasticsearchclient 编写配置,但我一直收到这样的错误:
应用程序启动失败
描述:
试图调用不存在的方法。尝试是从以下位置进行的:
co.elastic.clients.transport.rest_client.RestClientOptions.initialOptions(RestClientOptions.java:179)
不存在以下方法:
org.elasticsearch.client.RequestOptions$Builder.addHeader(Ljava/lang/String;Ljava/lang/String;)Lorg/elasticsearch/client/RequestOptions$Builder;
方法的 class、org.elasticsearch.client.RequestOptions$Builder 可从以下位置获得:
jar:file:/C:/Users/UtkuUslusoy/.m2/repository/org/elasticsearch/client/elasticsearch-rest-client/6.8.3/elasticsearch-rest-client-6.8.3.jar!/org/elasticsearch/client/RequestOptions$Builder.class
它是从以下位置加载的:
file:/C:/Users/UtkuUslusoy/.m2/repository/org/elasticsearch/client/elasticsearch-rest-client/6.8.3/elasticsearch-rest-client-6.8.3.jar
操作:
更正应用程序的 class 路径,使其包含 org.elasticsearch.client.RequestOptions$Builder
的单一兼容版本@Configuration
public class ElasticsearchConfiguration {
private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfiguration.class);
@Bean
public ElasticsearchClient elasticsearchClient(
@Value(value = "${com.**.**.core.configuration.**.mappingFile}") String mappingFile,
@Value(value = "${com.**.**.core.configuration.**.indexName}") String indexName,
@Value(value = "${com.**.**.core.configuration.**.hostName}") String hostName,
@Value(value = "${com.**.**.core.configuration.**.port}") Integer port) throws IOException {
final RestClient restClient = RestClient
.builder(new HttpHost(hostName, port))
.build();
final ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
final ElasticsearchClient client = new ElasticsearchClient(transport);
final InputStream stream = new ClassPathResource(mappingFile).getInputStream();
final CreateIndexRequest request = new CreateIndexRequest.Builder().index(indexName).withJson(stream).build();
try { client.indices().create(request); } catch (Throwable exception) { /* Intentionally left blank */ }
if (logger.isDebugEnabled()) logger.debug("Elasticsearch initialization complete");
return client;
}
}
Springboot版本:2.2.0.RELEASE
pom.xml:
<dependencies>
<!-- https://mvnrepository.com/artifact/co.elastic.clients/elasticsearch-java -->
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<!-- Needed only if you use the spring-boot Maven plugin -->
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-amqp -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.**.**</groupId>
<artifactId>aml-core</artifactId>
<version>${**.aml.version}</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<elasticsearch-version>7.17.2</elasticsearch-version>
</properties>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.17.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.17.2</version>
</dependency>
将这些添加到您的 pom。