2017-05-04 16 views
1

Eclipse IDEでJavaプロジェクトを作成しました。クラス内にこのコードがあります。 jarファイルの依存関係をすべて含めました。AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY,Arrays.asList(
       Netty3Plugin.class, 
       Netty4Plugin.class, 
       ReindexPlugin.class, 
       PercolatorPlugin.class, 
       MustachePlugin.class)) 
     .addTransportAddress(new InetSocketTransportAddress(InetAddress 
       .getByName("https://search-my-test-domain-XXXXXXXXXXXXXXXXXXXXXX.us-east-1.es.amazonaws.com"), 9300)); 

しかし、私は、コードを実行すると、このエラーが出たとき、

Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.transport.client.PreBuiltTransportClient.addPlugins(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection; 
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:125) 
at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:111) 
at ESConnManager.retrieveDataFromES(ESConnManager.java:572) 
at ESConnManager.main(ESConnManager.java:166) 

私はelasticsearchのv5.3.2を使用してのJava APIのV5.3を使用しています。どんな解決策ですか?

答えて

0

in the source code of PreBuiltTransportClient

ので、代わりにこの使用見ることができるように彼らはすでにPreBuiltTransportClientコンストラクタによって、デフォルトでロードされるあなたは、これらの5つのプラグインを指定する必要はありません:あなた以来、しかし

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) 
    .addTransportAddress(new InetSocketTransportAddress(InetAddress 
      .getByName("https://search-my-test-domain-XXXXXXXXXXXXXXXXXXXXXX.us-east-1.es.amazonaws.com"), 9300)); 

をトランスポートクライアントがサポートされていないことを知っているだけで、AWS管理対象ESクラスタにヒットしようとすると、TCP経由ではなくHTTP経由でAWS ESインスタンスにアクセスできます。次のエラーは、ノードが使用できないということです。

+0

プラグインを指定しなくても、NoSuchMethodエラーが表示されます。他のアイデア? – ree1991

+0

誤って別のelasticsearch JAR依存関係が含まれていないことは確かですか? – Val

+0

elasticsearchからelasticsearch-5.3.2.jar、rest-5.3.2.jar、transport-5.3.2.jarを追加しました。 RestClient restClient = RestClient.builder( \t \t \t新しいHttpHost( "search-my-test-domain-XXXXXXXXXXXXXXXXXXXXXX.us-east-1.es.amazonaws.com"、80、 "HTTP"))).build (); これは正常に動作します。しかし、TransportClientについては、私は同じエラーが発生し続けます。 – ree1991

関連する問題