我想清楚地了解如何处理以下情况:
I'm adding or removing an attribute from an activerecord model, so I want to update its mapping in ElasticSearch, in production.
据我了解,我应该...
1- 创建一个新索引并从 mysql 中导入所有内容
这是正确的命令吗? rake 环境 tire:import CLASS='Bow' INDEX='new-bows'
为了创建正确的映射,我应该已经更新了模型中的映射,对吗?
2- 删除旧映射并为 new-bows
创建一个名为 bows
的别名
我会那样做,对吗?
old_index_name = Bow.tire.index.name
Bow.tire.index.delete
alias = Tire::Alias.new
alias.name(old_index_name)
alias.index('new-bows')
alias.save
3-重启应用
我是不是遗漏了什么,或者是否有更简单的方法来使用 Tire 实现我想要的?
我应该在什么时候删除旧索引?可以在创建同名别名之前,还是之后创建?
最佳答案
您应该保留旧索引,直到您确定新索引 100% 符合您的要求。如果不是这种情况,您可以翻转别名。
Tire 测试套件中有一个用于“翻转别名”的集成测试。
关于ruby-on-rails - 更新生产中的 ElasticSearch 映射(轮胎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374330/