SpringBoot项目连接ElasticSearch时报错:None of the configured nodes are available

版权声明: 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是否相同
    • 确认版本是否一致

猜你喜欢

转载自blog.csdn.net/qq_34464926/article/details/89514697
今日推荐