org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available
elasticsearch有两个端口:http_port和transport.tcp.port
①http_port是ES节点与外部通讯使用的端口。它是http协议的RESTful接口(各种CRUD操作都是走的该端口) 默认9200
②transport.tcp.port是ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。(java程序中使用ES时,在配置文件中要配置该端口)默认9300
总结
报错情况1:需要正确的配置端口号
程序内部调用ES集群时要使用transport.tcp.port端口,没改默认值,就是9300,改了就根据实际情况使用你修改后的端口
程序以外操作ES集群时要使用http_port端口,没改默认值,就是9200,改了就根据实际情况使用你修改后的端口
我的程序报错就是因为在程序中应该使用transport.tcp.port端口,而我用了http_port端口,把ES配置信息的端口改为transport.tcp.port问题就解决了。
报错情况2:通过访问以下的es信息,需要注意项目中的配置集群名称不能写错(如下是:cluster_name = my_es),否则也会报该错误。
http://ip:9200/
{
"name" : "node-1",
"cluster_name" : "my_es",
"cluster_uuid" : "kXfn-OQ0R46b3hFj12133",
"version" : {
"number" : "5.5.3",
"build_hash" : "9305a5e",
"build_date" : "2017-09-07T15:56:59.599Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}