网站开发类优惠及服务承诺,学服装设计学费要多少,mg动画制作软件,专做网页的网站SpringBoot项目ES6.8.15 升级到 ES7.4.0
前言
由于公司内部资产统一整理#xff0c;并且公司内部部署有多个版本的es集群#xff0c;所以有必要将目前负责项目的ES集群升级到公司同一版本7.4.0。es6到es7的升级变化还是挺大的#xff0c;因此在这里做一下简单记录#xf…
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
旧版本
dependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-elasticsearch/artifactIdversion3.2.4.RELEASE/version
/dependency新版本
dependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-elasticsearch/artifactIdversion4.0.9.RELEASE/version
/dependencyspring.data.elasticsearch和ElasticSearch版本对应关系
spring.data.elasticsearch和ElasticSearch版本对应关系
3. elasticsearch
移除org.elasticsearch.elasticsearch的依赖直接使用spring.data.elasticsearch中的elasticsearch依赖
4. spring-boot-autoconfigure
移除spring-boot-autoconfigure依赖的版本
旧版本
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactIdversion2.2.4.RELEASE/version
/dependency新版本
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactId
/dependency2. 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. 代码修改
elasticsearchTemplate修改为elasticsearchRestTemplateSearchQuery 修改为NativeSearchQueryrepo.search 修改为 elasticsearchRestTemplate.search之前的NativeSearchQueryBuilder可以直接设置索引别名升级之后不支持需要在elasticsearchRestTemplate.search()方法中通过IndexCoordinates.of(alias)参数来设置索引elasticsearchRestTemplate.search()方法返回值也有相应的变化需要自行探索修改
代码示例
旧版本
PartsResult result new PartsResult();
BoolQueryBuilder builder builderPart(param);
SearchQuery searchQuery new NativeSearchQueryBuilder().withIndices(alias).withQuery(builder).build();
long time System.currentTimeMillis();
PageSearchPart 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();
SearchHitsSearchPart search elasticsearchRestTemplate.search(searchQuery, SearchPart.class, IndexCoordinates.of(alias));
ListSearchPart parts new ArrayList();
if (search.hasSearchHits()){for (SearchHitSearchPart searchHit : search.getSearchHits()) {SearchPart content searchHit.getContent();parts.add(content);}
}
log.debug(search oe object time:{},System.currentTimeMillis()-time);4. 总结
目前仅仅只是升级完之后可以正常使用还需要进一步进行代码优化和错误排查。本篇文章旨在为大家升级的时候提供一个参考有任何问题可以在评论区或者私信交流。