如何使用ElasticSearch rails批量导入1M记录?

时间:2016-04-05 12:55:06

标签: ruby-on-rails elasticsearch import elasticsearch-bulk-api

我想在我的生产服务器中运行从我的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”是否适用于后台?

0 个答案:

没有答案