版权声明: https://blog.csdn.net/qq_34464926/article/details/89514697
问题描述:
在springboot项目中使用TransportClient方式连接ES,完整报错:
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available
背景
- SpringBoot版本:1.5.11
- ES版本:7.0.0
- 项目中配置文件:
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
- 本地ES配置:使用默认配置,(默认配置cluster-name为
elasticsearch
) - 测试连接的代码:
public static void main(String[] argv) throws NumberFormatException, UnknownHostException {
/* //设置新集群名称
Settings settings = Settings.builder()
.put("cluster.name", "newCluster")
.put("node.name","newNode").build();*/
//创建client
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
System.out.println(client);
//搜索数据http://localhost:9200/megacorp/employee/_search
GetResponse response = client.prepareGet("megacorp", "employee", "1").execute().actionGet();
//输出结果
System.out.println(response.getSourceAsString());
//关闭client
client.close();
}
原因:
- 分析:由于报错显示没有可用的ES node节点,因此可能是配置连接的
cluster-name
和ES配置的值不一样(如果报这个错了,优先考虑这个因素,具体解决方法很简单,确认ES安装目录下config下elasticsearch.yml文件中配置的cluster.name和代码中配置的名字是否相同),但是在这里排除了这个原因,因为我默认都是elasticsearch。后面无意中看到ES7版本后不支持TransportClient方式连接了(还是得多关注官方文档啊),所以解决办法很简单,下载ES6版本,重新启动下就OK了。 - 结论:
- 确认cluster.name是否相同
- 确认版本是否一致