# es-manager **Repository Path**: lan-cat/es-manager ## Basic Information - **Project Name**: es-manager - **Description**: 学习flyway的思路做的es版本管理工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-09 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # es-manager #### 介绍 在您使用es的过程中肯定会遇到这样的问题,第一版项目已经上线了,接下来的几次内部迭代中,索引结构变更了几次,这个时候要么自己写代码让其升级,或者手扶升级,这个过程及其容易出问题,这个时候就可以使用es-manager来帮你管理 ------不适合大数据量索引使用 ## 如何使用 ### 第一步,引入依赖 ```python com.lanmao es-manager-core 0.1.0-SNAPSHOT ``` 如果需要将数据源存放在关系型数据库(目前仅支持mysql和pgsql),则引入如下依赖 ```python com.lanmao es-manager-db 0.1.0-SNAPSHOT ``` ### 第二步,yml配置 ```yaml es: upgrade: enabled: true #是否启用es自动升级工具 默认为true count: 1 #保留索引版本数量,默认为1,只有多版本策略才生效 dir: indices #索引mapping文件存放目录,默认为recourse下的indices目录 strategy: multi_version #升级策略,默认为multi_version db_type: elasticsearch #元数据存储位置,默认为elasticsearch ``` es.upgrade.strategy 索引升级策略,目前支持三种 > multi_version:多版本升级策略,升级数据迁移一次,例如 mb_0.1.0 -> mb_0.1.1;支持回滚,保留指定版本数量 > one_migration:gc回收似平滑升级策略,升级数据迁移一次,例如 mb->mb_s0,下一次升级即是mb_s0->mb > two_migration:数据迁移两次,例如mb->mb_s0,mb_s0->mb,性能较差 es.upgrade.db_type 元数据存储的数据库类型,目前支持三种 > elasticsearch:默认选项,元数据存储到用户当前连接的es上(不支持es8+版本),优势是无需引入第二种存储,缺陷是查看不方便 > mysql:元数据存储到用户连接的mysql数据库上,优势是直观 > postgresql:同mysql ### 第三步,创建目录 在indices目录下创建一个用于版本管理的目录,例如0.1.0_init,版本为0.1.0,描述为init(不支持v0.1.0_init形式) ### 第四步,添加索引 将需要被管理的索引添加到目录下面,例如test.json,test是索引名,内容是索引mapping 到此,配置完毕! ## 使用必看!! #### 1、索引结构变更,索引新增需要升级如何操作? 新添加一个目录,版本号大于之前发布的版本,将需要新增或者升级的索引放到目录下即可,如下图 #### 2、版本比较规则 0.1.0<0.1.1 0.1.0<0.2.0 0.1.0<1.0.0 ### 3、升级失败如何排查 首先看日志,日志会给出详细的错误原因; 或者看数据库es_index_log表,表中失败的索引都会记录错误原因,排查结束后重启项目即可 ### 4、我使用的是多版本策略,我想回滚到上一个版本,怎么操作呢 索引版本记录存在于es_index_log表中,需要保留多版本才支持回滚(es.upgrade.count>1),目前提供了索引回滚的方法,如下图 ### 5、使用过程中可以切换策略么? 目前支持使用过程中将two_migration、one_migration切换到multi_version one_migration:当且仅当所有需要被管理的索引名为xxx时(非xxx.s0形式) two_migration:无缝切换,无需做任何处理 ### 6、支持集群部署吗? 暂不支持