在生产中更新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} })