Ошибка при создании bean-компонента, не удалось создать экземпляр компонента с помощью фабричного метода
Я пытаюсь настроить asticsearch при загрузке Spring, но создание экземпляра Bean не выполняется, Node Builder был удален из API эластичного поиска, поэтому я пытаюсь использовать Settings.Builder, но это не помогает, я застрял почти на неделю, пожалуйста, помогите, ниже приведен код am с помощью:
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.demo.elastic.elasticdemo.repository")
public class ElasticConfiguration {
@SuppressWarnings("resource")
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
File tempDir = File.createTempFile("temp-elastic", Long.toString(System.nanoTime()));
System.out.println("Temp directory: "+ tempDir.getAbsolutePath());
Settings.Builder settings = Settings.builder()
//http settings
.put("http.enable", "true")
.put("http.cor.enable", "true")
.put("http.cors.allow-origin", "https?:?/?/localhost(:[0-9]+)?/")
.put("http.port", "9200")
//transport settings
.put("transport.tcp.port", "9300")
.put("network.host", "localhost")
//node settings
.put("node.data", "true")
.put("node.master", "true")
//configuring index
.put("index.number_of_shards", "1")
.put("index.number_of_replicas", "2")
.put("index.refresh_interval", "10s")
.put("index.max_results_window", "100")
//configuring paths
.put("path.logs", new File (tempDir, "logs").getAbsolutePath())
.put("path.data", new File (tempDir, "data").getAbsolutePath())
.put("path.home", tempDir);
//.build();
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"),9300));
return new ElasticsearchTemplate(client);
}
}
Что я делаю неправильно.??
получаю ошибку:
2018-09-27 19: 23: 35.825 ОШИБКА 57876 --- [ main] osboot.SpringApplication: сбой запуска приложения
org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем "loaders": Неудовлетворенная зависимость, выраженная через поле "Операции"; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем'asticsearchTemplate', определенного в ресурсе пути к классу [com/demo/astic/asticdemo/config/ElasticConfiguration.class]: сбой создания экземпляра бина с помощью метода фабрики; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.data.elasticsearch.core.ElasticsearchOperations]: метод фабрики "asticsearchTemplate "вызвал исключение; Вложенное исключение - java.lang.NoClassDefFoundError: org/asticsearch/transport/Netty3Plugin в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(Autowired ~ost..jar: 5.0.9.RELEASE] в org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]