Используйте клиент ElasticSearch в не веб-приложении с Spring

#spring #elasticsearch #spring-data

#spring #elasticsearch #spring-данные

Вопрос:

Я создаю не веб-приложение с Spring, которое будет считывать данные из 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>
  

Но он предоставляет множество других функций, которые мне не нужны в моем коде, есть ли какой-либо другой способ настроить spring-boot-starter-data-elasticsearch в не веб-приложении?

Спасибо.

Комментарии:

1. Просто отключите модуль mvc.

2. Но это не единственная зависимость, я понимаю, что могу отключить большинство из них, я просто хочу проверить, есть ли более чистый способ, потому что я не понимаю, почему API эластичного поиска зависит только от веб-приложения

3. конечно, используйте не Spring api elastic.co/guide/en/elasticsearch/client/java-api/current /…

4. Я знаю, что могу это использовать, но я пытаюсь использовать spring-boot-starter-data-elasticsearch, и я хочу проверить, предназначен ли он только для веб-приложений, потому что существует множество типов приложений, потоковых, автономных и т. Д.?. Все они могут использовать spring-boot, но не могут использовать клиент REST, это не имеет смысла, должен быть чистый способ его использования

5. он не предназначен только для Интернета, но использует эти, а не другие зависимости. Пожалуйста, не усложняй простые вещи.