2016-04-26 9 views
0

ESクラスタに接続する最も基本的なケースを試していますが、登録しているホストが登録されていないようです。これは私が実行しているコードです:ElasticSearch(java) - ノードが設定されていない問題

//Create the client 
Client client = new TransportClient(ImmutableSettings.builder() 
    .put("cluster.name", "MyCluster") 
    .put("client.transport.sniff","true").build()) 
    .addTransportAddresses(
     new InetSocketTransportAddress("host1", 9300), 
     new InetSocketTransportAddress("host2", 9300)); 

// Try to make a call 
SearchRequest sr = new SearchRequest().indices("MyIndex"); 
ActionFuture<SearchResponse> search = client.search(sr); 
SearchResponse actionGet = search.actionGet(); // <-- Exception 
System.out.println(actionGet.toString()); 

client.close(); 

これは私が得る例外です:スレッド「メイン」org.elasticsearch.client.transport.NoNodeAvailableExceptionで

例外:構成されたの
なしノードは利用できます:[]

接続ノードがないようですが、何が欠けていますか?

注:私はGradleの持つ弾性検索クライアントを使用しています:
コンパイル 'org.elasticsearch:elasticsearch:1.7.5'

+0

クラスタは正常に動作していますか? youtクライアントとサーバーのバージョンは同じですか? – alpert

+1

クラスタはREST呼び出しで正常に動作しています。そして、私は同じバージョンを持っていると思う、どのように私はサーバー上のバージョンをチェックするのですか? –

+0

'curl -XGET 'http:// host:9200'と入力してください。クラスタ名も確認してください。 – alpert

答えて

2

このためのいくつかの可能な理由があります。

    は、
  • クライアントとサーバーのバージョンが異なる場合があります
  • クラスタ名は異なる場合があります
  • hにアクセスするとネットワークに問題が発生する可能性がありますostとポート。
関連する問題