elasticsearch降级
Elasticsearch 降级操作指南:从 7.x 降至 6.8.23
由于 Elasticsearch 7.x 与 6.x 版本差异较大(如移除 Type、API 变更等),若需兼容旧系统或修复特定漏洞(如 log4j2 漏洞),可能需要降级至 6.8.23(6.x 系列的最后一个安全更新版本)。以下是详细的降级步骤及问题解决方法。
降级前准备
- 备份数据与配置
- 备份索引数据(建议通过
snapshotAPI 创建快照,存储至外部仓库)。 - 备份原 7.x 版本的配置文件(
/etc/elasticsearch/elasticsearch.yml、/etc/sysconfig/elasticsearch等),避免降级后配置丢失。
- 备份索引数据(建议通过
- 确认版本兼容性
- 6.8.23 支持 JDK 8(不支持 JDK 11),需确保环境中已安装 JDK 8 并配置正确。
降级步骤
下载 6.8.23 版本的 RPM 包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.rpm
覆盖安装旧版本
使用 rpm -Uvh --oldpackage 命令强制安装低版本,覆盖现有 7.x 版本:
rpm -Uvh --oldpackage elasticsearch-6.8.23.rpm
--oldpackage选项允许 RPM 安装比当前版本更低的包。
配置 JAVA_HOME(6.x 版本依赖外部 JDK)
Elasticsearch 7.x 自带 JDK,而 6.x 需依赖系统安装的 JDK 8,需手动配置:
编辑
/etc/sysconfig/elasticsearch文件:vi /etc/sysconfig/elasticsearch添加 JDK 路径(替换为实际 JDK 安装目录):
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 示例路径,需根据实际情况修改
修复目录权限问题
降级后可能出现日志或数据目录权限错误,需确保 elasticsearch 用户拥有读写权限:
调整日志目录权限
chown -R elasticsearch:elasticsearch /var/log/elasticsearch/
调整数据目录权限
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
清理集群状态文件(解决版本冲突)
7.x 版本的集群状态文件(如 cluster_uuid_committed)与 6.x 不兼容,会导致启动失败,需手动清理:
进入节点状态文件目录:
cd /var/lib/elasticsearch/nodes/0/_state/删除所有
.st后缀的状态文件(这些文件记录了 7.x 版本的集群元数据):rm -f *.st
启动 Elasticsearch 并验证
启动服务
systemctl start elasticsearch
查看状态(确保为 active (running))
systemctl status elasticsearch
验证版本(应显示 6.8.23)
curl http://localhost:9200?pretty
成功响应示例:
{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "xxxxxxxxxxxx",
"version" : {
"number" : "6.8.23",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "4f67856",
"build_date" : "2022-01-06T21:30:50.087716Z",
"build_snapshot" : false,
"lucene_version" : "7.7.3",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
常见问题解决
- 启动报错:
Cannot open file /var/log/elasticsearch/gc.log due to Permission denied- 原因:日志目录权限不足。
- 解决:执行
chown -R elasticsearch:elasticsearch /var/log/elasticsearch/修复权限。
- 启动报错:
Unexpected field [cluster_uuid_committed]- 原因:7.x 版本的集群状态文件与 6.x 不兼容。
- 解决:删除
/var/lib/elasticsearch/nodes/0/_state/目录下的.st文件,重启服务。
- JDK 版本不兼容(如提示
Unsupported major.minor version 55.0)- 原因:6.8.23 不支持 JDK 11(版本 55.0 对应 JDK 11)。
- 解决:安装 JDK 8 并在
/etc/sysconfig/elasticsearch中正确配置JAVA_HOME。
注意事项
- 数据兼容性:6.8.23 可读取 7.x 版本的索引数据,但需注意 7.x 中已移除的功能(如 Type)可能导致部分索引无法正常使用,建议降级前通过
reindex迁移数据至兼容格式。 - 配置文件差异:7.x 的部分配置项(如
discovery.type: single-node)在 6.x 中不支持,需参考 6.x 官方文档调整配置。 - 安全更新:6.8.23 包含 log4j2 漏洞修复,降级后需确保系统其他组件(如 Kibana、Logstash)也同步降级至 6.8.23,避免版本不兼容