es 連接出錯,錯誤信息如下:
[None of the configured nodes are available:[{#transport#-1}{Wn5UYXoTTIaPT4LZ3-RtZg}{???.???.?.???}{???.???.?.???:9200}]]
常見問題場景:
1)端口應(yīng)該為?9300;
2)TransportClient?版本與?ES?版本不一致;
3)Client.transport.sniff?參數(shù)值為?false;如果值為?true?會報?NoNodeAvailableException?。當?ES?服務(wù)器監(jiān)聽使用內(nèi)網(wǎng)服務(wù)器?IP?而訪問使用外網(wǎng)?IP?時,如果將?client.transport.sniff?設(shè)置為?true,則在自動發(fā)現(xiàn)時會使用內(nèi)網(wǎng)?IP?進行通信,導(dǎo)致無法連接到?ES?服務(wù)器;建議將參數(shù)設(shè)置為?false,然后直接使用?addTransportAddress?方法手動添加入口節(jié)點;
4)InetAddress.getByName()?方法中參數(shù)值,必須替換為您的?ES?實例基本信息界面中的內(nèi)網(wǎng)地址(比如?192.168.1.115)。
舉例說明:
public TransportClientgetESConnection() {
????????TransportClient client =null;
? ? ? ? try {
????????????????????Settings esSettings = Settings.builder()
? ? ? ? ? ? ? ? ? ? .put("cluster.name", "elasticsearch_cluster")// 設(shè)置ES實例的名稱
? ? ? ? ? ? ? ? ? ? .put("client.transport.sniff", false)// 自動嗅探整個集群的狀態(tài),把集群中其他ES節(jié)點的ip添加到本地的客戶端列表中
? ? ? ? ? ? ? ? ? ? .build();
? ? ? ? ? ? client =new PreBuiltTransportClient(esSettings);// 初始化 client 較老版本發(fā)生了變化,此方法有幾個重載方法,初始化插件等。
????????????// 此步驟添加 IP ,至少一個,其實一個就夠了,因為添加了自動嗅探配置
? ? ? ? ? ? client.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.115"), 9300));
? ? ? ? }catch (UnknownHostException e) {
????????????log.info("elasticsearch連接異常信息 : {}", e.getMessage());
? ? ? ? }
????????return client;
? ? }