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