1. 程式人生 > 其它 >SpringBoot專案連線ElasticSearch時報錯:None of the configured nodes are available

SpringBoot專案連線ElasticSearch時報錯:None of the configured nodes are available

在專案中用到了ElasticSearch,後臺使用org.elasticsearch.client.transport.TransportClient連線,使用本機的es測試沒問題,但是用部署到公司伺服器上的es建立索引報錯:None of the configured nodes are available

網上找了好多種解決方案都不適用,最後無意中看到了client.transport.sniff這個引數的介紹,把它設定成false,或者在連線的時候不加這個引數就可以了。看來我們不能只一味地面向百度程式設計,還要理解每個引數的意思才行。client.transport.sniff為true時,客戶端會自動去嗅探整個叢集的狀態,把叢集中其它機器的ip地址加到客戶端中。一般你不用手動設定叢集裡所有叢集的ip到連線客戶端,它會自動幫你新增,並且自動發現新加入叢集的機器,但是要注意的一點,當ES伺服器監聽(publish_address )使用內網伺服器IP,而訪問(bound_addresses )使用外網IP時,不要設定client.transport.sniff為true。不設定client.transport.sniff時,預設為false(關閉客戶端去嗅探整個叢集的狀態)。因為在自動發現時會使用內網IP進行通訊,導致無法連線到ES伺服器。因此此時需要直接使用addTransportAddress方法把叢集中其它機器的ip地址加到客戶端中(此段話轉自“

Kevin-林”)。

總結一下,再遇到此類問題的解決方案:

1:檢查es叢集名稱是否正確,檢查es的ip和埠號是否正確,埠號是9300tcp協議埠號

2:阿里雲等伺服器是否已將9300埠號增加到安全組

3:es是否啟用了使用者名稱密碼登入:.put("xpack.security.user", "使用者名稱:密碼")

4:client.transport.sniff引數是否設定正確