《探错笔记》之Springboot集成ES报org.elasticsearch.client.transport.NoNodeAvailableException异常

《探错笔记》之Springboot集成ES报org.elasticsearch.client.transport.NoNodeAvailableException异常

问题

目前出现以下异常

1
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available

的大部分原因都是因为springboot直接使用

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

但是springboot的版本不同,支持的elasticsearch版本不一样
在使用SpringBoot整合Elasticsearch 之前,我们应该了解下它们之间对应版本的关系。

Spring Boot Version (x) Spring Data Elasticsearch Version (y) Elasticsearch Version (z)
x <= 1.3.5 y <= 1.3.4 z <= 1.7.2*
x >= 1.4.x 2.0.0 <=y < 5.0.0** 2.0.0 <= z < 5.0.0**
这里我们使用的SpringBoot的版本是2.X,那么支持的Elasticsearch版本5+,当连接的ES版本不兼容就会出异常

解决办法

1、JestClient

随着ElasticSearch的版本变更,相关的Java API也在做不断的调整,就是ElasticSearch服务端版本进行更改之后,客户端的代码可能需要重新编写。

因此介绍一个相当好用的第三方工具JestClient,它对ElasticSearch进行封装,填补了 ElasticSearch HttpRest接口 客户端的空白,它适用于ElasticSearch2.x以上的版本,无需因为ElasticSearch服务端版本更改而对代码进行更改!

2、RestHighLevelClient

 Java高级别REST客户端(The Java High Level REST Client)以后简称高级客户端,内部仍然是基于低级客户端。它提供了更多的API,接受请求对象作为参数并返回响应对象,由客户端自己处理编码和解码。
每个API都可以同步或异步调用。 同步方法返回一个响应对象,而异步方法的名称以async后缀结尾,需要一个监听器参数,一旦收到响应或错误,就会被通知(由低级客户端管理的线程池)。
高级客户端依赖于Elasticsearch core项目。 它接受与TransportClient相同的请求参数并返回相同的响应对象。
兼容性
高级客户端需要Java 1.8并依赖于Elasticsearch core项目。 客户端版本需要与Elasticsearch版本相同。 它与TransportClient请求的参数和返回响应对象相同。 如果您需要将应用程序从TransportClient迁移到新的REST客户端,请参阅“迁移指南”。
要能够与Elasticsearch进行通信,主版本号需要一致,次版本号不必相同,因为它是向前兼容的。次版本号小于等于elasticsearch的都可以。这意味着它支持与更高版本的Elasticsearch进行通信。
6.0客户端能够与任何6.x Elasticsearch节点通信,而6.1客户端肯定能够与6.1,6.2和任何后来的6.x版本进行通信,但与旧版本的Elasticsearch节点通信时可能会存在不兼容的问题,例如6.1和6.0之间,可能6.1客户端支持elasticsearch 6.0还没出来的API。
建议在将Elasticsearch集群升级到新的主要版本时升级高级客户端,因为REST API中断更改可能会导致意料之外的结果,具体取决于请求所击中的节点,以及新添加的API只能被更新的客户端版本支持。应该在群集中的所有节点都升级到新的主要版本之后,客户端才更新。

关注Github:1/2极客

关注博客:御前提笔小书童

关注网站:HuMingfeng

关注公众号:开发者的花花世界


本作品采用知识共享署名 4.0 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自御前提笔小书童,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:https://www.royalscholar.cn/2020/03/20/《探错笔记》之Springboot集成ES报org.elasticsearch.client.transport.NoNodeAvailableException异常/

# IDEA

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×