#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. он не предназначен только для Интернета, но использует эти, а не другие зависимости. Пожалуйста, не усложняй простые вещи.