我对 ES 还很陌生。我一直在寻找数据库迁移工具,但找不到。我想知道是否有人可以帮助我指出正确的方向。
我将使用 Elasticsearch 作为我的项目中的主要数据存储。我想对我在项目中开发新模块时运行的所有映射和配置更改/数据导入/数据升级脚本进行版本控制。
过去我使用 Flyway 或 Liquibase 等数据库版本控制工具。
是否有任何框架/脚本或方法可以与 ES 一起使用来实现类似的功能?
是否有人有使用脚本手动执行此操作并运行迁移脚本至少升级脚本的经验。
提前致谢!
从这个角度/需求来看,ES有巨大的局限性:
这对于您的问题意味着什么?基本上,您无法拥有经典的 ES 迁移工具。以下是可以让您更轻松地使用 ES 的工作:
"dynamic": "strict"
和/或index.mapper.dynamic: false
,请查看映射文档)。这将保护您的索引/类型不被意外地动态映射为错误的类型当您错过数据映射关系中的某些错误时,会出现显式错误
您可以获取实际的 ES 映射并将其与您的数据模型进行比较。如果你的 PL 有足够高级别的 ES 库,这应该很容易
您可以利用索引别名进行迁移
所以,一点经验。对我来说,目前合理的流程是这样的:
news
),它指向实际索引(即news_index_{revision}_{date_created}
)。每次部署代码时,您
所有这些实际上意味着您可以很好地使用现有的映射/数据,只需像往常一样处理数据即可。
name_{revision}_{date}
bulk
请求快速重新索引
在此重新索引期间,您可以通过别名正常安全地索引新文档。缺点是在重新索引期间历史数据部分可用。这是经过生产测试的解决方案。这种方法的注意事项:
总结一下:
river-*
工具一样。