SpringBoot项目ES6.8升级ES7.4.0

打印 上一主题 下一主题

主题 1825|帖子 1825|积分 5475


SpringBoot项目ES6.8.15 升级到 ES7.4.0

前言

由于公司内部资产统一整理,而且公司内部部署有多个版本的es集群,所以有必要将目前负责项目的ES集群升级到公司同一版本7.4.0。es6到es7的升级变化照旧挺大的,因此在这里做一下简朴记录,
注:升级方案需要根据实际项目来定,本升级方案可能不是最优,但目前来看应该是比力得当这个项目的
1. 依靠相关

1. SpringBoot版本:2.3.12.RELEASE

2. spring.data.elasticsearch:

旧版本

  1. <dependency>
  2.     <groupId>org.springframework.data</groupId>
  3.     <artifactId>spring-data-elasticsearch</artifactId>
  4.     <version>3.2.4.RELEASE</version>
  5. </dependency>
复制代码
新版本

  1. <dependency>
  2.     <groupId>org.springframework.data</groupId>
  3.     <artifactId>spring-data-elasticsearch</artifactId>
  4.     <version>4.0.9.RELEASE</version>
  5. </dependency>
复制代码
spring.data.elasticsearch和ElasticSearch版本对应关系

spring.data.elasticsearch和ElasticSearch版本对应关系

3. elasticsearch

移除org.elasticsearch.elasticsearch的依靠,直接使用spring.data.elasticsearch中的elasticsearch依靠
4. spring-boot-autoconfigure

移除spring-boot-autoconfigure依靠的版本
旧版本

  1. <dependency>
  2.         <groupId>org.springframework.boot</groupId>
  3.         <artifactId>spring-boot-autoconfigure</artifactId>
  4.         <version>2.2.4.RELEASE</version>
  5. </dependency>
复制代码
新版本

  1. <dependency>
  2.         <groupId>org.springframework.boot</groupId>
  3.         <artifactId>spring-boot-autoconfigure</artifactId>
  4. </dependency>
复制代码
2. mapping文件

升级es7.4后,索引的mapping文件发生了相应的变化,移除了type字段,如下所示
旧版本

  1. {
  2.   "index_name": {
  3.     "mappings": {
  4.       "part": {
  5.         "properties": {
  6.           "brandCode": {
  7.             "type": "keyword"
  8.           },
  9.           "brandName": {
  10.             "type": "keyword"
  11.           },
  12.           "brands": {
  13.             "type": "keyword"
  14.           },
  15.           "enable": {
  16.             "type": "boolean"
  17.           }
  18.         }
  19.       }
  20.     }
  21.   }
  22. }
复制代码
新版本

  1. {
  2.   "index_name": {
  3.     "mappings": {
  4.       "properties": {
  5.         "brandCode": {
  6.           "type": "keyword"
  7.         },
  8.         "brandName": {
  9.           "type": "keyword"
  10.         },
  11.         "brands": {
  12.           "type": "keyword"
  13.         },
  14.         "enable": {
  15.           "type": "boolean"
  16.         }
  17.       }
  18.     }
  19.   }
  20. }
复制代码
2. 配置文件

  1. spring.elasticsearch.rest.uris=集群地址
  2. spring.elasticsearch.rest.username=账号
  3. spring.elasticsearch.rest.password=密码
复制代码
3. 代码修改


  • elasticsearchTemplate修改为elasticsearchRestTemplate
  • SearchQuery 修改为NativeSearchQuery
  • repo.search 修改为 elasticsearchRestTemplate.search
  • 之前的NativeSearchQueryBuilder可以直接设置索引别名,升级之后不支持,需要在elasticsearchRestTemplate.search()方法中通过IndexCoordinates.of(alias)参数来设置索引
  • elasticsearchRestTemplate.search()方法返回值也有相应的变化,需要自行探索修改
代码示例

旧版本

  1. PartsResult result = new PartsResult();
  2. BoolQueryBuilder builder = builderPart(param);
  3. SearchQuery searchQuery = new NativeSearchQueryBuilder()
  4.         .withIndices(alias)
  5.         .withQuery(builder)
  6.         .build();
  7. long time = System.currentTimeMillis();
  8. Page<SearchPart> pageResult = repo.search(searchQuery);
  9. log.debug("search oe object time:{}",System.currentTimeMillis()-time);
复制代码
新版本

  1. PartsResult result = new PartsResult();
  2. BoolQueryBuilder builder = builderPart(param);
  3. NativeSearchQuery  searchQuery = new NativeSearchQueryBuilder()
  4.         .withQuery(builder)
  5.         .build();
  6. long time = System.currentTimeMillis();
  7. SearchHits<SearchPart> search = elasticsearchRestTemplate.search(searchQuery, SearchPart.class, IndexCoordinates.of(alias));
  8. List<SearchPart> parts = new ArrayList<>();
  9. if (search.hasSearchHits()){
  10.     for (SearchHit<SearchPart> searchHit : search.getSearchHits()) {
  11.         SearchPart content = searchHit.getContent();
  12.         parts.add(content);
  13.     }
  14. }
  15. log.debug("search oe object time:{}",System.currentTimeMillis()-time);
复制代码
4. 总结

目前仅仅只是升级完之后可以正常使用,还需要进一步进行代码优化和错误排查。本篇文章旨在为各人升级的时候提供一个参考,有任何题目可以在评论区大概私信交流。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表