2017-02-13 4 views
1

3つのマスターノード、6つのデータノード、および3つのクライアントノードを持つ非常に標準的なelasticsearch設定があります。ここでは、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(); 
     } 
    } 

現在、3つの異なるホスト名がホスト名リストにあります。しかし、このホスト名のリストから1つのクライアントがダウンすると、Elasticsearchトランスポートクライアントは応答を停止します。私はElasticsearchサイトでトランスポートクライアントのドキュメントを見てきましたが、Githubの問題を見てみましたが、ノードがダウンするたびにelasticsearchはノードのリストからそれを削除し、他のノードとの作業を続ける必要があります。壊す。誰でも何が問題なのか考えていますか? 今はelasticsearch 2.4.3を使用しています。

答えて

0

単一のノードを追加した後にループを破るようです。 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

関連する問題