2015-11-05 2 views
8

Я недавно сделал переход от elasticsearch с 1.7 до 2.0, и я заметил, как вы изменили настройку клиента. Я просмотрел документацию и по какой-то причине клиент всегда имеет значение null. Мне было интересно, правильно ли я это настроил.Java elasticsearch client always null

Вот мой код:

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

У вас есть исключение? Ваш синтаксис так же, как и должен быть –

+0

Я получаю эту ошибку: 'java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor() Ljava/util/concurrent/Executor;' –

+0

это полностью guava и относится к проблеме с несколькими версиями guava в одно и то же время. Я предлагаю вам сделать чистую компиляцию. Если это военный файл, удалите папку проекта внутри webapps и переустановите. ничего общего с ES –

ответ

14

Как было отмечено в комментариях, но немного более подробно: Elasticsearch 2,0 использует гуавы 18,0 (см https://github.com/elastic/elasticsearch/pull/7593). Поэтому, чтобы исправить ошибки, такие как java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concu‌rrent/Executor;, обязательно используйте Guava 18.0 в качестве зависимости, а не другие версии.

+0

Пробовал использовать Guava 20.0 с elasticsearch 2.4.1, и он работает! Но довольно странно, что Guava 15.0, похоже, работает с ES 2.3.5. IMHO, его по-прежнему хорошая идея использовать Guava 18.0 или выше при обновлении до ES 2.0 или выше. – quickbrownfox