我想在我的生产服务器中运行从我的MySQL表到ES的批量导入 - 对于我的模型Wine。 有1.5M的记录。
我的模型 - 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”是否适用于后台?