2017-02-02 5 views
1

まず、私の英語はすみません。 Java APIトランスポートクライアントに問題があります。私は1つのマスターノードと3つのデータノードを持っています。私のElasticsearchのバージョンは5.0.2で、5.0.2 APIを使用しています。ノードがありません例外Elasticsearch 5.0.2

は私が交通クライアントと私のクラスタに接続しようとし、私は、クライアントの私のコードであること

Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{8SAZOxXXTU61DuDDMN-vGw}{XX.XX.X.XXX}{XX.XX.X.XXX:9300}, {#transport#-2}{Fv3729YgTGClRBo5T2mWpA}{XX.XX.X.XXX}{XX.XX.X.XXX:9300}, {#transport#-3}{Fr98ApBbRv29Xv6Mc8L4TQ}{XX.XX.X.XXX}{XX.XX.X.XXX:9300}, {#transport#-4}{JOmpSH4LRzuP_XInxQtD9Q}{XX.XX.X.XXX}{XX.XX.X.XXX:9300}]] 
    at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:328) 
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:226) 
    at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59) 
    at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:339) 
    at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403) 
    at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80) 
    at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54) 
    at org.elasticsearch.action.ActionRequestBuilder.get(ActionRequestBuilder.java:62) 
    at nn.Main.main(Main.java:57) 

を応答:

import java.net.InetAddress; 
import java.net.UnknownHostException; 

import org.elasticsearch.action.search.SearchRequestBuilder; 
import org.elasticsearch.action.search.SearchResponse; 
import org.elasticsearch.action.search.SearchType; 
import org.elasticsearch.client.transport.TransportClient; 
import org.elasticsearch.common.settings.Settings; 
import org.elasticsearch.common.transport.InetSocketTransportAddress; 
import org.elasticsearch.index.query.QueryBuilders; 
import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient; 

public class Main { 
    private static String[] hosts = new String[] { 
      "XX.XX.X.XXX" 
      ,"XX.XX.X.XXX" 
      ,"XX.XX.X.XXX" 
      ,"XX.XX.X.XXX"   
      }; 

    private static final Settings settings = Settings.builder() 
      .put("cluster.name", "myCluster") 
      .put("client.transport.sniff", true) 
      .put("transport.tcp.port", 9300) 
      .put("xpack.security.user", "transport_client_user:changeme") 
      .build(); 
    private static final String index = "myIndex"; 
    private static final String type = "myType"; 
    private static TransportClient client; 


    public static void main(String[] args) throws UnknownHostException { 

     InetSocketTransportAddress[] ista = new InetSocketTransportAddress[hosts.length]; 

     for (int i = 0; i < hosts.length; i++) { 
     ista[i] = new InetSocketTransportAddress(InetAddress.getByName(hosts[i]), 9300); 
    } 

     client = new PreBuiltXPackTransportClient(settings).addTransportAddresses(ista);   

     SearchRequestBuilder rb = client 
       .prepareSearch(index) 
       .setTypes(type) 
       .setSearchType(SearchType.DEFAULT) 
       .setQuery(QueryBuilders.termQuery("_id", 3524598)); 


     SearchResponse sResponse = rb.get(); 
     System.out.println(sResponse.toString()); 
    } 
} 

港トランスポートのクライアントのための - 私のすべてのノードが通信、9300この港の下で私は私の質問のように多くを見て、私はそれらに含まれているアドバイスに従おうとしています。しかし、私は同じ例外があります。

私のエラスティックの詳細情報やファイルや設定が必要な場合は、私は答えます。

それは、これがelasticsearch.yml

cluster.name: myCluster 
node.name: elastic-0 

path.data: /var/db/elasticsearch 
path.logs: /var/log/elasticsearch 
path.scripts: /usr/local/libexec/elasticsearch 

network.host: _vmx0_ 

node.master: true 
node.data: false 
node.ingest: false 

node.attr.rack_id: rack_one 
cluster.routing.allocation.awareness.attributes: rack_id 

discovery.zen.minimum_master_nodes: 3 
discovery.zen.ping.unicast.hosts: ["XX.XX.X.XXX","XX.XX.X.XXX","XX.XX.X.XXX","XX.XX.X.XXX","XX.XX.X.XXX"] 

bootstrap.memory_lock: false 

xpack.monitoring.exporters: 
    id1: 
    type: http 
    host: ["XX.XX.X.XXX:9200"] 
    auth.username: remote_monitor 
    auth.password: changeme 

の内容で重要な場合、私はちょうどClientTransportClientを変更し、client.transport.sniffを無効にしようとしたが、結果なし。

私はどんな助けやアイデアに対しても非常に感謝しています。

+0

の可能性のある重複[構成されたノードのJavaのElasticSearchなしで利用できます](http://stackoverflow.com/questions/25912572/java-elasticsearch-none-of-the-configured-nodes - 利用可能) – Kulasangar

+0

@Kulasangarいいえ、その他の理由。弾性v5のXPack – Valeriy

答えて

1

"NoNodeAvailableException"を受け取った理由が見つかりました。

なぜなら、transport_clientのロールは、デフォルトですべてのインデックスのデータを表示する権限を与えないからです。 そして、インデックスのデータへのアクセスのための私の役割を構築します。

リンク:https://www.elastic.co/guide/en/x-pack/5.0/built-in-roles.html

関連する問題