开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
前情提要:因为工作需要,要求将老项目中的es从5.6升级到7.15,中间走了不少弯路,查了很多资料,为了防止忘记,先记录一下,目前都已经升级完成了,想到哪里写到哪里,后面应该会再修改
1.前期准备
首先是非代码的部分,es的向下兼容不是很好,很多老版本的内容没办法适配新版本,需要进行修改,比如es表中的数据类型,string类型在新版本中是被keyword和text给替代的,keyword和text的区别是text可以被分词,keyword是作为整体进行搜索的。
其次在pom文件中导入新的es依赖,并删除掉旧的es依赖,这里一定要删除旧的依赖,并且在maven里面检查一遍,把所有其他版本的es依赖全部删掉,不然的话会出现依赖冲突,项目跑不起来,这个是非常坑的一点。
<elasticsearch.version>7.15<elasticsearch.version>
`<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>soring-boot-starter-data-elasticsearch</artifactId>
</dependency>`
然后在配置文件中增加配置
es集群的地址
spring.elasticsearch.uris=
连接es集群的账户密码,如果es有配置的话
spring.elasticsearch.username=
spring.elasticsearch.password=
2.中期修改
理论上来说,引入上面的依赖之后就可以直接通过下面这种直接注入的方式进行连接,不需要额外配置连接代码了,但是这貌似要求springboot的版本要高,由于我负责的是老项目,所以版本有点低,这种连接方式不可行,需要自己写Bean注入,后面再慢慢完善吧
这里说一个很坑的点,老项目之前用的是transportClient的连接方式,这种方式在7.x之后连接带有密码的es的时候会报transport-1的错误,所以我的建议是如果碰到这种情况 不要犹豫 马上换连接方式,更换完连接方式之后必须要修改代码中的API,es的向下兼容做的一般,很多老方法都不能用了。这个要说的就多了,后面再写。
@Autowired
private RestHighLevelClient restHighLevelClient