首页 > 解决方案 > 使用 Spring 在非 Web 应用程序中使用 ElasticSearch 客户端

问题描述

我正在使用 Spring 创建一个非 Web 应用程序,它将从 Kafka 读取数据并将其写入 ElasticSearch,我包含以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

以及以下配置类:

@Configuration
public class ElasticSearchConfig extends AbstractElasticsearchConfiguration{
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder().connectedTo("localhost:9200")
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

当我执行以下代码时:

@Override
public void run(String... args) throws Exception {
    IndexRequest request = new IndexRequest("test-transactions");
    request.id("2");
    request.source("{\"name\":\"Sammie\"," + "\"lastname\":\"Goldner\"," + "\"username\":\"hugh.vonrueden\","
            + "\"amount\":9622235.2009}", XContentType.JSON);
    
    client.index(request, RequestOptions.DEFAULT);
    
}

我得到以下异常:

Caused by: java.lang.ClassNotFoundException: org.springframework.http.HttpHeaders
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_251]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_251]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_251]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_251]
    ... 46 common frames omitted

如果我包含以下依赖项,则代码可以正常工作:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

但它带来了很多我不想在我的代码中使用的其他功能,有没有其他方法可以在非 Web 应用程序中配置spring-boot-starter-data-elasticsearch ?

谢谢。

标签: springelasticsearchspring-data

解决方案


推荐阅读