避免使用Chewy进行数据库查询

时间:2016-05-27 21:13:03

标签: ruby-on-rails elasticsearch chewy-gem

我正在使用Rails的Elasticsearch库Chewy。我试图找出一种有效批量导入约200万条记录的方法。这些是Elasticsearch文档,它们是我所拥有的几种不同数据库模型的非规范化版本。

我将工作分成大小为1000的批次,并使用Sidekiq将它们卸载到工作队列中。问题是什么时候导入!正在调用有一堆额外的数据库查询正在解决字段,我不知道如何摆脱它们。

我做的天真的方法是ModelIndex::Type.import [<list of ids>]。这显然会从DB中查找每个文档,然后对其进行序列化/反序列化。这显然效率低下,所以我试着这样做

ModelIndex::Type.import Type.includes(:secondary_field, :other_field).all

尝试使用急切加载我的优势并使用连接执行一个数据库查询而不是1000。唉,它仍像以前一样查找数据库中的每个对象。

也许我错过了一些东西,但我希望在索引减少时间时避免尽可能多的数据库查询,任何帮助都会非常感激!

0 个答案:

没有答案