我对ES很新。我一直在尝试搜索数据库迁移工具很长时间,我找不到一个。我想知道是否有人可以帮我指出正确的方向。
我会在项目中使用Elasticsearch作为主数据存储区。我想对我在项目中开发新模块时运行的所有映射和配置更改/数据导入/数据升级脚本进行版本化。
过去我使用过Flyway或Liquibase等数据库版本控制工具。
是否有任何框架/脚本或方法可以与ES一起使用来实现类似的东西?
有没有人有任何使用脚本和至少升级脚本运行迁移脚本的经验。
提前致谢!
答案 0 :(得分:28)
从这个角度来看,ES有很大的局限性:
这对你的问题有什么意义?基本上,您无法为ES提供经典的迁移工具。以下是什么可以让您更轻松地使用ES:
使用严格映射("dynamic": "strict"
和/或index.mapper.dynamic: false
,查看mapping docs)。这将保护您的索引/类型
您可以获取实际的ES映射并将其与数据模型进行比较。如果您的PL具有足够高的ES级别库,这应该非常简单
您可以利用index aliases进行迁移
所以,一点经验。对我来说,目前合理的流程是:
news
),它指向实际索引(即news_index_{revision}_{date_created}
)。每次部署代码时,
尝试放置模型(类型)映射。如果它完成没有错误,这意味着您
所有这些实际上意味着您可以使用您拥有的mappping /数据,只需像往常一样处理数据
name_{revision}_{date}
bulk
请求快速重建索引
在重建索引期间,您可以通过别名安全地索引新文档。缺点是历史数据在重建索引期间部分可用。这是经过生产测试的解决方案。围绕这种方法的注意事项:
总结一下:
river-*
工具。答案 1 :(得分:0)
看看https://github.com/hatala91/ES-MaMa 尽管这不是一个真正成熟的项目,但它可能会满足您的需求。
披露:我是该项目的维护者;-)