簡體   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