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

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.kler.cn/news/362742.html

相关文章:

  • openpnp - 底部相机视觉识别CvPipeLine的参数bug修正
  • 【代码随想录Day50】图论Part02
  • Android打开Activity时不自动弹出键盘
  • 【性能优化】安卓性能优化之CPU优化
  • Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)
  • 复旦大学全球供应链研究中心揭牌,合合信息共话大数据赋能
  • STM32G474使用TIM2触发DAC输出输出正弦波
  • uniapp使用webView打开的网页有缓存如何解决(APP,微信小程序)
  • HarmonyOS鸿蒙分布式文件操作的时候权限问题
  • Rust中的Sync特征:确保多线程间安全共享数据
  • 软件工程--需求分析与用例模型
  • Python包——Matplotlib
  • C++STL之list
  • 探索卷积层参数量与计算量
  • MySQL--基本介绍
  • HBuilder X 中Vue.js基础使用2(三)
  • 基于 Konva 实现Web PPT 编辑器(三)
  • qt生成uuid,转成int。ai回答亲测可以
  • 线性可分支持向量机的原理推导 9-32线性分类超平面的位置 公式解析
  • Dubbo接口解析
  • WordPress多站点子目录模式更换域名的教程方法
  • elementUI进度条el-progress不显示白色
  • 使用预测或实际LTV计算ROI
  • ubuntu22 安装labelimg制作自己的深度学习目标检测数据集
  • 微软大哥,全球第一(交易积累)
  • IDEA 如何导入NC65项目