使用elasticsearch java api 调用es服务时出现NoNodeAvailableException的错误时原因有下:
Settings esSetting = Settings.builder().put("cluster.name", "elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(esSetting);
TransportAddress address = new InetSocketTransportAddress(InetAddress.getByName("120.76.35.8"), 9300);
client.addTransportAddress(address);
集群名称写错,“elasticsearch”是默认的集群名称,如果你改过名称的话,把正确的名称写上去就好:Settings.builder().put(“cluster.name”, “正确的集群名称”).build();
ip地址或者端口写错,java api使用的是Transport端口,默认是9300,如果写成9200就会出错,9200是http接口默认的调用端口。
如果以上两点都没有写错的话,那就只有一个原因就是网络不通,你的程序压根找不到es,要么是es服务没开启,要么是防火墙拦截了。