如何将ElasticSearch 7.0与Spring Boot集成?解决依赖版本冲突
在Spring Boot中替换Elasticsearch依赖为7.0.0版本
嘿,我来帮你搞定这个版本冲突的问题!Spring Boot的spring-boot-starter-data-elasticsearch确实会默认引入和当前Boot版本绑定的Elasticsearch依赖,所以要换成7.0.0版本,你需要做两个关键操作:排除starter自带的旧版ES依赖,再手动引入你想要的7.0.0版本。
第一步:排除starter中的默认Elasticsearch依赖
首先修改你的spring-boot-starter-data-elasticsearch依赖配置,把它自带的Elasticsearch相关模块都排除掉,这样就不会自动引入6.5版本了。修改后的依赖代码如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <!-- 排除默认的Elasticsearch及相关客户端依赖 --> <exclusions> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> </exclusion> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> </exclusion> </exclusions> </dependency>
第二步:手动引入7.0.0版本的Elasticsearch依赖
接下来把你需要的7.0.0版本的Elasticsearch核心库和对应的REST客户端依赖加进去,Spring Data Elasticsearch需要这些客户端来和ES服务器交互:
<!-- 引入7.0.0版本的Elasticsearch核心库 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.0.0</version> </dependency> <!-- 引入对应版本的REST低级别客户端 --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.0.0</version> </dependency> <!-- 引入对应版本的REST高级别客户端 --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.0.0</version> </dependency>
额外注意事项
要特别留意:Spring Data Elasticsearch和Elasticsearch服务器版本是严格对应的。7.0.0的ES服务器需要搭配Spring Data Elasticsearch 4.0.x版本,而这个版本的Spring Data通常在Spring Boot 2.2.x及以上版本中才会默认引入。如果你的Spring Boot版本比较旧(比如2.1.x或更早),直接替换ES版本可能会出现API不兼容的问题,建议先确认Spring Boot、Spring Data Elasticsearch和Elasticsearch三者的版本匹配关系,再进行调整。
内容的提问来源于stack exchange,提问作者Sarvar Nishonboyev
相关产品推荐
相关产品推荐

