2015-11-05 11 views
8

Niedawno wprowadziłem zmianę z elastycznej wyszukiwarki 1,7 na 2,0 i zauważyłem sposób, w jaki klient się zmienił. Przeszedłem przez dokumentację iz jakiegoś powodu klient jest zawsze pusty. Zastanawiałem się, czy ustawiłem poprawnie.Klient Java elasticsearch zawsze ma wartość zerową

Oto mój kod:

Client client = null; 

    try { 
     client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 
    } catch (Exception e) { 
     Logger.log(e); 
    } finally { 
     client.close(); 
     try { 
      conn.close(); 
     } catch (SQLException e) { 
      Logger.log(e); 
     } 
    } 
+0

Czy otrzymujesz wyjątek? Twoja składnia jest taka, jak powinna być –

+0

Otrzymuję ten błąd: 'java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor() Ljava/util/concurrent/Executor;' –

+0

to jest całkowicie guava związane i dotyczy problemu z kilkoma wersjami guava w tym samym czasie. Proponuję zrobić czystą kompilację. Jeśli jest to plik wojenny, usuń folder projektu wewnątrz aplikacji webowych i przeprowadź ponowne wdrożenie. nic nie zrobić z ES –

Odpowiedz

14

Jak zauważył w komentarzach, ale nieco bardziej szczegółowo: Elasticsearch 2.0 wykorzystuje Guava 18,0 (patrz https://github.com/elastic/elasticsearch/pull/7593). Aby naprawić błędy, takie jak java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concu‌rrent/Executor;, upewnij się, że używasz Guava 18.0 jako zależności, a nie innych wersji.

+0

Próbowałem użyć Guava 20.0 z elasticsearch 2.4.1 i to działa! Ale to dość dziwne, że Guava 15.0 wydaje się współpracować z ES 2.3.5. IMHO, nadal dobrym pomysłem jest użycie Guava 18.0 lub wyższej podczas uaktualniania do wersji ES 2.0 lub wyższej. – quickbrownfox

Powiązane problemy