Elasticsearch客户端不获取结果

Elasticsearch客户端不获取结果

问题描述:

我们有一个非常标准elasticsearch设置与3的主节点,6个数据节点和3个的客户端节点。这里是我们的连接代码,用于从我们的Java应用程序连接到Elasticsearch客户端。Elasticsearch客户端不获取结果

Settings settings = Settings.settingsBuilder() 
      .put("cluster.name", configuration.getString("clusterName")) 
      .put("client.transport.sniff", false) 
      .put("client.transport.ping_timeout", "5s") 
      .build(); 

    TransportClient client = TransportClient.builder().settings(settings).build(); 

    for (String hostname : (Collection<String>)configuration.get("hostnames")){ 
     try { 
      client = client.addTransportAddresses(
        new InetSocketTransportAddress(InetAddress.getByName(hostname), 9300) 
      ); 
      break; 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } 
    } 

我们目前在主机名列表中有三个不同的主机。但是,只要此主机名列表中的单个客户端发生故障,Elasticsearch传输客户端就会停止响应。我已经经历了上Elasticsearch现场运输的客户端文件不见了,还试图寻找他们的Github上的问题,根据每当一个节点出现故障仅elasticsearch应该从节点列表中删除,并继续与其他节点的工作,但是对我们来说,事情就分解。任何人有任何想法可能是什么问题? 我们现在使用elasticsearch 2.4.3。

它看起来像你打破循环的单个节点已经被添加之后。尝试删除break语句:

for (String hostname : (Collection<String>)configuration.get("hostnames")){ 
     try { 
      client = client.addTransportAddresses(
        new InetSocketTransportAddress(InetAddress.getByName(hostname), 9300) 
      ); 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

真要命!它非常简单。可能是我只是被困在一个盒子里,我不能错。 – Hardik127

+0

@ Hardik127适合我们最好的人!有时我们错过了最愚蠢的事情。干杯! – SureshS