我刚开始使用ElasticSearch
,我希望自动化代码版本之间的迁移。
对于RDBMS
,我使用像phinx这样的工具将更改应用到DB。
例如:
- 使用up()&down()方法
- 编写要应用的命令(例如添加索引)
- 经过试验等CCD_ 3
有这样的迁移工具吗?
如果没有,是否有其他可接受的方法来处理对集群的更改?
我从未听说过专门用于ES索引的工具。
如果你的目标是更新数据的内部表示,我认为最好的方法就是创建一个脚本:
- 查找受影响的文档
- 阅读内容
- 修改它们
- 在新文档中重新索引
- 然后您可以删除旧文档
更新文档——它不会比重新索引更高效,因为文档是不可变的,所以更新只是get+reindex(https://www.elastic.co/guide/en/elasticsearch/guide/current/update-doc.html)
带有基于代码(例如Java)迁移的Flyway可用于处理任何数据存储。类似于迁移关系数据库,但需要做更多的工作,因为您需要使用相关命令(例如创建索引)来实现对ElasticSearch的调用。
https://flywaydb.org/documentation/concepts/migrations.html#java-基于的迁移
来自RDBMS的背景,当您处理一个有很多迁移文件的大项目时,迁移工具非常方便。Elasticsearch也面临着同样的问题,即目前社区中没有稳定的迁移工具。
我已经创建了一个迁移工具,如果你来自python的背景,它会很方便https://pypi.org/project/chalan/.核心思想取自Alembic迁移工具,该工具用于Sqlalchemy。
使用简单
pip install chalan
然后升级你必须使用
chalan upgrade
对于降级,你必须使用
chalan downgrade
如果您在使用此工具时遇到任何问题,请告诉我,并随时提出一些改进建议。
有关源代码,请参阅github链接-https://github.com/anandtripathi5/chalan