2

我想对如何处理以下情况有一个清晰的认识:

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

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

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

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

2-删除旧映射并创建一个别名bowsnew-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-重启应用


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

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

4

2 回答 2

3

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

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

于 2013-03-13T09:04:19.660 回答
3

向索引添加新列:

index = Tire.index("articles")

index.mapping("article", :properties => { :pinterest_shares => {:type => 'integer', :index => 'not_analyzed', :include_in_all => false} })
于 2013-09-14T22:02:33.397 回答