【发布时间】:2013-02-28 17:44:51
【问题描述】:
我想对如何处理以下场景有一个清晰的认识:
我正在从 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-重启应用
我是否遗漏了什么,或者有没有更简单的方法可以使用轮胎实现我想要的?
我应该在什么时候删除旧索引?在创建同名别名之前,还是可以在之后创建?
【问题讨论】:
-
嗨,我在一个有 1000 万行的模型上使用导入任务,并将大量数据转储到每条记录的索引中。粗略估计需要多少时间?我最后一次检查是 5% 花了大约 8 小时。这正常吗?
-
你必须加载关联吗?如果是这样,请不要忘记加载它们。我认为有一个选项,否则,我建议您自己使用
Tire.index(index_name).import batch进行导入。尝试确定哪个部分可能需要更长的时间。问题可能来自您为每条记录拥有的数据量。我过去处理过数百万条记录,但它比 62.5k 记录/小时要快得多。
标签: ruby-on-rails ruby-on-rails-3 elasticsearch tire