繁体   English   中英

AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

[英]AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

我在Eclipse IDE中创建了一个Java项目,并且在类中有这个代码。 我已经包含了所有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));

但是,当我运行代码时出现此错误,

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。 有解决方案吗

您不需要指定这五个插件,因为它们已经由PreBuiltTransportClient构造函数默认加载,如PreBuiltTransportClient 的源代码中PreBuiltTransportClient

所以请改用:

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群集,只知道不支持传输客户端,您只能通过HTTP而不是TCP访问AWS ES实例。 您将获得的下一个错误是该节点不可用。

暂无
暂无

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

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