从 Elasticsearch 迁移到 OpenSearch

适用场景

需要从 Elasticsearch 切换到 OpenSearch,或希望使用许可证更宽松的搜索栈。两者 API 高度相似,但插件、安全配置和版本兼容性需要逐项验证。

前置条件

步骤

  1. 记录源集群信息:
curl -s http://es:9200 | jq
curl -s 'http://es:9200/_cat/indices?v'
curl -s 'http://es:9200/_cat/aliases?v'
  1. 注册快照仓库并创建快照:
curl -X PUT 'http://es:9200/_snapshot/backup' \
  -H 'Content-Type: application/json' \
  -d '{"type":"s3","settings":{"bucket":"es-backup","base_path":"migration"}}'

curl -X PUT 'http://es:9200/_snapshot/backup/snap-1?wait_for_completion=true'
  1. 在 OpenSearch 注册同一仓库并恢复:
curl -X PUT 'http://os:9200/_snapshot/backup' \
  -H 'Content-Type: application/json' \
  -d '{"type":"s3","settings":{"bucket":"es-backup","base_path":"migration"}}'

curl -X POST 'http://os:9200/_snapshot/backup/snap-1/_restore?wait_for_completion=true'
  1. 迁移索引模板和组件模板:
curl -s 'http://es:9200/_index_template' > templates.json
# 检查字段和版本后写入 OpenSearch
  1. 迁移 ILM 到 ISM,调整策略名称和 API。

  2. 切换客户端:更新连接地址、认证方式和兼容头。

验证

回滚

常见坑

相关命令