当前位置: 首页 > news >正文

SpringBoot项目ES6.8升级ES7.4.0

在这里插入图片描述

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:

旧版本
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>3.2.4.RELEASE</version>
</dependency>
新版本
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-elasticsearch</artifactId><version>4.0.9.RELEASE</version>
</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依赖的版本

旧版本
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.2.4.RELEASE</version>
</dependency>
新版本
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId>
</dependency>

2. mapping文件

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

旧版本

{"index_name": {"mappings": {"part": {"properties": {"brandCode": {"type": "keyword"},"brandName": {"type": "keyword"},"brands": {"type": "keyword"},"enable": {"type": "boolean"}}}}}
}

新版本

{"index_name": {"mappings": {"properties": {"brandCode": {"type": "keyword"},"brandName": {"type": "keyword"},"brands": {"type": "keyword"},"enable": {"type": "boolean"}}}}
}

2. 配置文件

spring.elasticsearch.rest.uris=集群地址
spring.elasticsearch.rest.username=账号
spring.elasticsearch.rest.password=密码

3. 代码修改

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

代码示例

旧版本
PartsResult result = new PartsResult();
BoolQueryBuilder builder = builderPart(param);
SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(alias).withQuery(builder).build();
long time = System.currentTimeMillis();
Page<SearchPart> pageResult = repo.search(searchQuery);
log.debug("search oe object time:{}",System.currentTimeMillis()-time);
新版本
PartsResult result = new PartsResult();
BoolQueryBuilder builder = builderPart(param);
NativeSearchQuery  searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
long time = System.currentTimeMillis();
SearchHits<SearchPart> search = elasticsearchRestTemplate.search(searchQuery, SearchPart.class, IndexCoordinates.of(alias));
List<SearchPart> parts = new ArrayList<>();
if (search.hasSearchHits()){for (SearchHit<SearchPart> searchHit : search.getSearchHits()) {SearchPart content = searchHit.getContent();parts.add(content);}
}
log.debug("search oe object time:{}",System.currentTimeMillis()-time);

4. 总结

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

http://www.lryc.cn/news/467359.html

相关文章:

  • 深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务
  • MFC工控项目实例二十六创建数据库
  • springmvc源码流程解析(一)
  • 【论文阅读】SRGAN
  • kubelet PLEG实现
  • leetcode49:字母异位词分组
  • 一个将.Geojson文件转成shapefile和kml文件的在线页面工具(续)
  • 论文阅读(二十四):SA-Net: Shuffle Attention for Deep Convolutional Neural Networks
  • 基于YOLOv8深度学习的智能道路裂缝检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】
  • YOLOv11入门到入土使用教程(含结构图)
  • python 爬虫抓取百度热搜
  • 3.1 > Linux文件管理(基础版)
  • CTFHUB技能树之文件上传——MIME绕过
  • 4种鼓励创业创新的方法
  • C#中的LINQ之美:优雅的数据查询与操作
  • 深入浅出:深度学习模型部署全流程详解
  • git已经commit,但未push想撤回提交
  • SSL VPN调试思路及配置指南
  • 多租户架构的全景分析(基本概念、实现策略、资源管理和隔离、数据安全与隔离、性能优化、扩展性与升级、案例研究)
  • TDengine数据库整合MyBatis实现SpringBoot项目CRUD
  • 1493. 删除一个元素以后全为1的最长子数组 - 题解
  • 密钥管理方法DUKPT的OpenSSL代码实现Demo
  • 计算机视觉中的坐标变换
  • C++——NetWork
  • iOS -- 代码优化
  • docker配置普通用户访问
  • php后端学习,Java转php
  • Elasticsearch 中管道介绍
  • 将jinjia2后端传到前端的字典数据转化为json
  • Linux中如何理解一切皆文件