Transport Client 訪問 es 常見問題


es 連接出錯,錯誤信息如下:

[None of the configured nodes are available:[{#transport#-1}{Wn5UYXoTTIaPT4LZ3-RtZg}{???.???.?.???}{???.???.?.???:9200}]]

常見問題場景:

1)端口應該為 9300;

2)TransportClient 版本與 ES 版本不一致;

3)Client.transport.sniff 參數值為 false;如果值為 true 會報 NoNodeAvailableException 。當 ES 服務器監聽使用內網服務器 IP 而訪問使用外網 IP 時,如果將 client.transport.sniff 設置為 true,則在自動發現時會使用內網 IP 進行通信,導致無法連接到 ES 服務器;建議將參數設置為 false,然后直接使用 addTransportAddress 方法手動添加入口節點;

4)InetAddress.getByName() 方法中參數值,必須替換為您的 ES 實例基本信息界面中的內網地址(比如 192.168.1.115)。

舉例說明:

public TransportClientgetESConnection() {

        TransportClient client =null;

        try {

                    Settings esSettings = Settings.builder()

                    .put("cluster.name", "elasticsearch_cluster")// 設置ES實例的名稱

                    .put("client.transport.sniff", false)// 自動嗅探整個集群的狀態,把集群中其他ES節點的ip添加到本地的客戶端列表中

                    .build();

            client =new PreBuiltTransportClient(esSettings);// 初始化 client 較老版本發生了變化,此方法有幾個重載方法,初始化插件等。

            // 此步驟添加 IP ,至少一個,其實一個就夠了,因為添加了自動嗅探配置

            client.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.115"), 9300));

        }catch (UnknownHostException e) {

            log.info("elasticsearch連接異常信息 : {}", e.getMessage());

        }

        return client;

    }



作者:平面小獅子
鏈接:https://www.jianshu.com/p/c0b4e3048d21
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM