ruby-on-rails - 更新生产中的 ElasticSearch 映射(轮胎)

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

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

I'm adding or removing an attribute from an activerecord model, so I want to update its mapping in ElasticSearch, in production.

据我了解,我应该...

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

这是正确的命令吗? rake 环境 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-重启应用


我是不是遗漏了什么,或者是否有更简单的方法来使用 Tire 实现我想要的?

我应该在什么时候删除旧索引?可以在创建同名别名之前,还是之后创建?

最佳答案

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

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

关于ruby-on-rails - 更新生产中的 ElasticSearch 映射(轮胎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374330/

相关文章:

ruby-on-rails - rails : carrier wave : validate before file upload

ruby-on-rails - Rails 4 强参数 - 更新时堆栈级别太深

javascript - (Rails,Javascript) RJS "Can' t 查找变量“错误未提供详细信息

ruby-on-rails-3 - Facebook登录错误: Refused to display in a frame because it set 'X-Frame-Options' to 'DENY'

ruby-on-rails - 为什么这个 Rails 操作返回字符串而不是 JSON?

node.js - 为什么 ElasticSearch 匹配查询返回所有结果?

ruby-on-rails - 向模型添加按位虚拟列

ruby-on-rails - 将参数传递给 '.js.erb' 模板

ElasticSearch:过滤聚合top_hits

elasticsearch - 弹性监视基础结构-度量标准中的空白字段