之前一直都是通過yum安裝es,最近使用docker-compose部署了一個單節點es,java調用9300端口的時候,總是報錯:None of the configured nodes are available,網上找了很多文檔,都說cluster.name不一致導致,或者端口不正確,但是程序和es的name都是一致,端口也是正確的。
都有點想放棄的時候,終于找到一篇有用的文章,被坑了兩周的問題,終于得到了解決。
主要原因:spring-boot項目中使用了client.transport.sniff為true,使客戶端去嗅探整個集群的狀態,把集群中其它機器的ip地址加到客戶端中。這樣做的好處是,一般你不用手動設置集群里所有集群的ip到連接客戶端,它會自動幫你添加,并且自動發現新加入集群的機器。
處理方式:
1、把client.transport.sniff修改為false關閉嗅探;或者直接使用addTransportAddress方法把集群中其它機器的ip地址加到客戶端中。
2、修改ES服務器配置,將publish_host改為服務器的ip而不是docker分配的內部IP
elasticsearch.yml
cluster.name: elasticsearch network.host: 0.0.0.0 network.publish_host: 192.168.1.200 http.port: 9200 discovery.type: single-node
贊
6
賞


