gpt4 book ai didi

java - AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:08 25 4
gpt4 key购买 nike

我在 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 构造函数默认加载,如 in the source code of 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 实例。您将收到的下一个错误是该节点不可用。

关于java - AWS ElasticSearch PreBuiltTransportClient java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com