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。