Elasticsearch报 NoNodeAvailableException 的解决办法

1. 异常的出现

    在使用TransportClient连接Elasticsearch时出现了NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}…… 这种异常,通过搜索其他人分享的解决办法,例如

    new InetSocketTransportAddress(InetAddress.getByName("???.???.???.???"), 9300);

        ⑴ 修改端口号为TCP内部传输端口 9300

    Settings settings = Settings.builder().put("cluster.name", "???").build();
    TransportClient transportClient = new PreBuiltTransportClient(settings);

        ⑵ 设置集群名称

    但是,尝试了这些方法仍然无法解决问题。最终我将Elasticsearch改为前台启动(之前一直是后台启动服务的),通过查看服务的日志,得出了解决的办法

2. 服务日志

  [2017-12-30T00:57:00,859][WARN ][o.e.t.n.Netty4Transport  ] [master] exception caught on transport layer [[id: 0x????, L:/???.???.???.???:9300 - R:/???.???.???.???:???]], closing connection
  java.lang.IllegalStateException: Received message from unsupported version: [5.5.2] minimal compatible version is: [5.6.0]

    可以看到日志很清楚的描述了出错的原因,就是因为使用了低版本的transport,最小的兼容版本须为5.6.0

3. 解决办法

    修改pom依赖为5.6.0版本即可


    org.elasticsearch.client
    transport
    5.6.0

4. 注意事项

    我使用的Elasticsearch是elasticsearch-6.0.0版本的,所以可能并不适用于你们的情况

你可能感兴趣的:(Elasticsearch)