[英]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.