2017-02-27 24 views
5

Próbuję połączyć moją aplikację Spring Boot z lokalną instancją elasticsearch 5.2.1. Kiedy używam "org.springframework.boot:" zależność od Spring-boot-starter-data-elasticsearch ", napotykam na" Otrzymano wiadomość z nieobsługiwanej wersji: [2.0.0] minimalna zgodna wersja to: [5.0.0] ". Myślę, że wynika to z wersji elasticsearch 2.4.4 w zależności od startera. Aby rozwiązać ten błąd, edytuję właściwości pom.xml, dodając linię: elasticsearch.version> 5.2.1/elasticsearch.version>. Ale tym razem ja dostać "java.lang.NoSuchMethodError: org.elasticsearch.client.transport.TransportClient.builder()"Jak skonfigurować Spring Boot za pomocą elasticsearch 5.2.1?

Aby przezwyciężyć ten problem, i tworzyć własne klasy config jak poniżej:

@Configuration 
public class ElasticsearchConfiguration { 

@Bean 
public Client client() throws UnknownHostException { 
    TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) 
      .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 

    return client; 
} 

@Bean 
public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException { 
    return new ElasticsearchTemplate(client()); 
} 
} 

Tym razem dostaję wyjątki apache.logging.log4j (check here), więc dodaję niezbędne zależności.

Wreszcie dostaję się poniżej błędu i tam utknąłem. Czy ktoś może mi w tym pomóc?

wyjątek zagnieżdżonych jest java.lang.NoClassDefFoundError: org/elasticsearch/akcji/liczba/CountRequestBuilder

Odpowiedz

1

Próbowałem to samo i coraz tego błędu zbyt dla CountRequestBuilder, powodem jest to, że CountRequestBuilder klasa jest przestarzałe i usuwane teraz z 5.x elastycznych wersji wyszukiwania, ta klasa jest zastąpiona przez SearchRequestBuilder, ale niestety spring-data-elasticsearch nie udostępnia tego nawet w najnowszym wydaniu jej słoika i że w ElasticSearchTemplate użyto CountRequestBuilder.

Szukam również rozwiązania. Będę publikować, jeśli będzie w stanie rozwiązać.

4

Strona github z spring-data-elasticsearch pokazuje, że obecnie obsługuje elastyczne wyszukiwanie tylko do wersji 2.4.0.

Teraz masz 3 opcje:

  • czekać i mieć nadzieję
  • kasie pull request
  • Zamówienie oddział dev 5.0.x-prep
2

Można użyć elasticsearch Java API stworzyć klienta transportu zamiast korzystać z elastycznych danych sprężynowych.