在生产中更新ElasticSearch映射(轮胎)

我想清楚地了解如何处理以下场景:

我正在从activerecord模型添加或删除属性,所以我想在生产中更新其在ElasticSearch中的映射。

根据我的理解,我应该……

1-创建一个新索引并从mysql导入所有内容

这是正确的命令吗? rake environment 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-重启app


我错过了什么,或者是否有更简单的方法来实现我想要的轮胎使用?

我应该在什么时候删除旧索引? 在创建具有相同名称的别名之前,还是可以在之后执行此操作?

您应该保留旧索引,直到您确定新索引是您想要的100%。 如果不是这种情况,您可以将别名翻转回来。

在Tire测试套件中有一个用于“翻转别名”的集成测试。

要向索引添加新列:

 index = Tire.index("articles") index.mapping("article", :properties => { :pinterest_shares => {:type => 'integer', :index => 'not_analyzed', :include_in_all => false} })