2017-08-13 21 views
0

私は弾性検索の概念にはとても新しいです。私は、弾性検索を使用して簡単なアプリケーションを構築しようとしています。ノードがありませんElastic Searchの例外があります

public class App 
{ 
public static void main(String[] args) 
{ 
    try { 
     TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) 
       .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 

     ElasticOperations.addDocToIndex(client, ElasticUtility.getJsonMap("Sandesha", "male", "[email protected]", "Hassan")); 
     System.out.println("Doc added"); 
     client.close(); 
    } catch (UnknownHostException e) { 

     e.printStackTrace(); 
    } 

} 
} 

しかし、このプログラムを実行しようとしたとき、私はNoNodeAvailableExceptionを取得しています。

スレッド "メイン" NoNodeAvailableExceptionの例外:ORGで[構成のノードのどれが利用できない[{#輸送#-1} {w1bSLAN-TFWUHE1PA3qDeQ} {ローカルホスト} {127.0.0.1:9300}]] .elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347) at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245) at org.elasticsearch.client.transport.TransportProxyClient.execute (TransportProxyClient.java:59) at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:363) at org.elasticsearch.client.support.AbstractClient.execute(Abst com.sandesha.elasticsearchでorg.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54) でorg.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80) でractClient.java:408) 。 Elastic.ElasticOperations.addDocToIndex(ElasticOperations.java:11)​​com.sandesha.elasticsearch.Elastic.App.main(App.java:27)で

私はこの問題を解決してください。 私ElasticOperationsクラスは、

public class ElasticOperations { 

public static void addDocToIndex(TransportClient client, Map<String,Object> jsonMap) 
{ 
    client.prepareIndex("customers", "personal").setSource(jsonMap).execute().actionGet(); 
} 

} 

され、

public class ElasticUtility { 

public static Map<String, Object> getJsonMap(String name, String gender, String email, String city) 
{ 
    Map<String,Object> jsonMap = new HashMap<String, Object>(); 
    jsonMap.put("name", name); 
    jsonMap.put("gender", gender); 
    jsonMap.put("email", email); 
    jsonMap.put("city", city); 

    return jsonMap; 
} 
} 

ありがとう、のように私のElasticUtilityクラスが見えます。

+0

端末から弾性に接続するかセンスを使用できますか? – sourabh1024

+0

私はターミナル経由で接続できます。ポート9200で動作します –

答えて

0

あなたはクラスタ名の不一致があると思います。あなたのクラスタ名が "elasticsearch"ではない場合、それはおそらく問題です。

ブラウザでhttp://localhost:9200にアクセスし、クラスタ名を取得します。次に、次のようにTransportClientにクラスタ名プロパティを追加してみます。

Settings settings = Settings.builder() 
          .put("cluster.name", "elasticsearch_foo").build(); 
TransportClient client = new PreBuiltTransportClient(settings) 
         .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));