简体   繁体   English

AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

[英]AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

I've created a Java project in Eclipse IDE and in a class have this code. 我在Eclipse IDE中创建了一个Java项目,并且在类中有这个代码。 I have included all the jar file dependencies. 我已经包含了所有jar文件依赖项。

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));

But when I run the code this error comes, 但是,当我运行代码时出现此错误,

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)

I'm using elasticsearch v5.3.2 and using the java api v5.3. 我正在使用elasticsearch v5.3.2并使用java api v5.3。 Any solution? 有解决方案吗

You don't need to specify those five plugins as they are already loaded by default by the PreBuiltTransportClient constructor as can be seen in the source code of PreBuiltTransportClient 您不需要指定这五个插件,因为它们已经由PreBuiltTransportClient构造函数默认加载,如PreBuiltTransportClient 的源代码中PreBuiltTransportClient

So use this instead: 所以请改用:

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

However, since you're trying to hit an AWS managed ES cluster, just know that the transport client is not supported, you can only access AWS ES instances via HTTP and not via TCP. 但是,由于您尝试访问AWS托管ES群集,只知道不支持传输客户端,您只能通过HTTP而不是TCP访问AWS ES实例。 The next error you'll get is that the node is not available. 您将获得的下一个错误是该节点不可用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM