6

我想在我的生产服务器中运行从我的 MySQL 表到 ES 的批量导入——对于我的模型 Wine。有 150 万条记录。

我的模型 - ES gem 的代码:

include Elasticsearch::Model
include Elasticsearch::Model::Callbacks

def as_indexed_json(options={}) 
  as_json(only: [:id, :searchable]) 
end 

mapping do
  indexes :id, index: :not_analyzed
  indexes :searchable
end

在开发中,我成功运行:

bundle exec rake environment elasticsearch:import:model CLASS='Wine' BATCH='100'

但我只有 1000 条记录...

我可以在 prod 中运行类似的命令而不会出现问题吗?还有其他方法吗?

我注意到我需要推送使用上面代码更新的模型,否则它将不起作用。问题是如果用户想要在批量导入之前更新对象并且在我的模型更改之后,将会出现 ES 问题 (DocumentNotFound) - 合乎逻辑。如果尚未创建,是否可以使用回调来创建 ES 索引,而不是获得 ES 异常?

这样做的正确方法是什么?“elasticsearch:import:model”是否在后台工作?

4

0 回答 0