小编wil*_*mas的帖子

为已存储数据的模型重新加载轮胎/弹性搜索映射

我正在使用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进行部署,因此我可以自动完成我成功使用的三个步骤而不会有太多麻烦.但我是弹性研究的新手,所以我认为我很可能会误用两者或者让事情变得不必要.

ruby-on-rails mongomapper chef-infra elasticsearch tire

5
推荐指数
1
解决办法
1604
查看次数