我正在使用 Tire 和 elasticsearch 在 MongoMapper 模型上提供搜索功能,该模型是 Rails 应用程序的一部分。我刚刚偶然发现了一个问题,当我重新部署到使用以下配置的环境(在 config/environments/env_name.rb 中)时,该模型的映射没有更新:
config.cache_classes = true
单独重新加载类似乎并不能解决问题(也许可以理解,新映射可能与我猜的现有数据不兼容?)。相反,我必须执行以下操作:
MyModel.index.delete
<restart the app or reload the class>
MyModel.index.import MyModel.all
我只是想知道是否有更好的方法a)。确保在我的模型代码中定义的最新映射在每次部署后都被 elasticsearch 使用,但是 b). 避免用完整的数据集不必要地重新填充索引?
我们通常使用 Chef 进行部署,因此我可以自动完成我成功使用的三个步骤,而不会遇到太多麻烦。但是我是弹性搜索和轮胎的新手,所以我认为我很可能会滥用两者或使事情变得不必要的困难。