Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS ElasticSearch预构建传输客户端java.lang.NoSuchMethodError_Java_Amazon Web Services_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,Amazon Web Services,elasticsearch" /> elasticsearch,Java,Amazon Web Services,elasticsearch" />

AWS ElasticSearch预构建传输客户端java.lang.NoSuchMethodError

AWS ElasticSearch预构建传输客户端java.lang.NoSuchMethodError,java,amazon-web-services,elasticsearch,Java,Amazon Web Services,elasticsearch,我在EclipseIDE中创建了一个Java项目,并在一个类中创建了此代码。我已经包含了所有jar文件依赖项 TransportClient client = new PreBuiltTransportClient(Settings.EMPTY,Arrays.asList( Netty3Plugin.class, Netty4Plugin.class, ReindexPlugin.class,

我在EclipseIDE中创建了一个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)
线程“main”java.lang.NoSuchMethodError中的异常:org.elasticsearch.transport.client.PreBuiltTransportClient.addPlugins(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection; 在org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:125) 位于org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:111) 在ESConnManager.retrieveDataFromES(ESConnManager.java:572) 位于ESConnManager.main(ESConnManager.java:166)
我正在使用elasticsearch v5.3.2和JavaAPI v5.3。有什么解决方案吗?

您不需要指定这五个插件,因为可以看到,
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实例。您将遇到的下一个错误是节点不可用。

您不需要指定这五个插件,因为可以看到,
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实例。您将遇到的下一个错误是节点不可用。

即使没有指定插件,我仍然会遇到NoSuchMethod错误。还有其他想法吗?你确定没有错误地包含另一个elasticsearch JAR依赖项吗?我从elasticsearch中添加了elasticsearch-5.3.2.JAR、rest-5.3.2.JAR、transport-5.3.2.JAR。RestClient RestClient=RestClient.builder(新的HttpHost(“search-my-test-domain-xxxxxxxxxxxxxx.us-east-1.es.amazonaws.com”,80,“http”))).build();这个很好用。但是对于TransportClient,我一直收到相同的错误。正如我在上一段中提到的,您无论如何都不能使用TransportClient,因为AWS ES不允许您连接TCP端口。坚持使用RestClientI仍然会得到NoSuchMethod错误,即使我没有指定插件。还有其他想法吗?你确定没有错误地包含另一个elasticsearch JAR依赖项吗?我从elasticsearch中添加了elasticsearch-5.3.2.JAR、rest-5.3.2.JAR、transport-5.3.2.JAR。RestClient RestClient=RestClient.builder(新的HttpHost(“search-my-test-domain-xxxxxxxxxxxxxx.us-east-1.es.amazonaws.com”,80,“http”))).build();这个很好用。但是对于TransportClient,我一直收到相同的错误。正如我在上一段中提到的,您无论如何都不能使用TransportClient,因为AWS ES不允许您连接TCP端口。坚持使用RestClient