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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。