NoNodeAvailableException при попытке подключения к ES, размещенному на AWS.

У меня есть экземпляр ES, работающий на AWS, и я хочу подключиться к нему с помощью JAVA API.

TransportClient client = TransportClient.builder().build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9320));

List<DiscoveryNode> nodes = client.connectedNodes();

System.out.println(nodes.size()); // prints 0

for (DiscoveryNode node : nodes) {
  System.out.println(node.toString());
}

SearchRequestBuilder searchRequestBuilder = client.prepareSearch("indexName");

String postQuery = "{ some stuff }";

searchRequestBuilder.setQuery(QueryBuilders.wrapperQuery(postQuery));

SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
System.out.println(searchResponse.toString().replace("\n\n", "\n"));

Когда я запускаю эту программу, я получаю:

NoNodeAvailableException[Ни один из настроенных узлов недоступен:
[{#transport#-1}{127.0.0.1}{localhost/127.0.0.1:9320}]

Я туннелировал в экземпляр, где порт TCP — 9320, а порт REST — 9220.

animesh$ lsof -i :9320
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ssh     44239 animesh    7u  IPv6 ______ 0t0  TCP localhost:9320 (LISTEN)
ssh     44239 animesh    8u  IPv4 ______ 0t0  TCP localhost:9320 (LISTEN)

animesh$ curl localhost:9220
{
  "name" : "SuperNode",
  "cluster_name" : "SuperCluster",
  "version" : {
    "number" : "2.3.0",
    "build_hash" : "8371be8d5fe5df7fb9c0516c474d77b9feddd888",
    "build_timestamp" : "2016-03-29T07:54:48Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.0"
  },
  "tagline" : "You Know, for Search"
}

person Animesh Pandey    schedule 20.05.2016    source источник
comment
Что происходит, когда вы пытаетесь использовать 9220?   -  person alpert    schedule 20.05.2016
comment
Это для HTTP-вызовов. TransportClient требуется TCP-соединение   -  person Animesh Pandey    schedule 20.05.2016
comment
Версии клиента и сервера одинаковы?   -  person alpert    schedule 20.05.2016
comment
Да, у меня есть ES 2.3.0 и Lucene 5.5.0 в моем файле POM.   -  person Animesh Pandey    schedule 20.05.2016
comment
У вас есть собственное имя кластера?   -  person alpert    schedule 20.05.2016
comment
Кластер на AWS называется SuperCluster. Не знаю, нужно ли указывать это в программе?   -  person Animesh Pandey    schedule 20.05.2016
comment
Второй пример оформления заказа: astic.co/guide/en/elasticsearch/client/java-api/current/   -  person alpert    schedule 20.05.2016


Ответы (1)


Мой контрольный список для этого случая:

  • Версии клиента и сервера могут отличаться
  • Имя кластера может быть другим
  • При доступе к хосту и порту может возникнуть проблема с сетью.
person alpert    schedule 20.05.2016