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

时间:2013-03-12 23:34:10

标签: ruby-on-rails ruby-on-rails-3 elasticsearch tire

我想清楚地了解如何处理以下情况:

  

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

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

1-创建一个新索引并从mysql

导入所有内容

这是正确的命令吗? rake environment tire:import CLASS='Bow' INDEX='new-bows' 为了创建正确的映射,我应该已经在模型中更新了我的映射,对吧?

2-删除旧映射并为bows

创建名为new-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-重新启动应用


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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

向索引添加新列:

index = Tire.index("articles")

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