繁体   English   中英

使用Elasticsearch索引大量MongoDB集合

[英]Index a large collection of MongoDB with Elasticsearch

我在MongoDB中有一个大集合(约2500万个),我想用ElasticSearch索引其中的所有文档。

在我的带有猫鼬代码的NodeJS中,我正在执行以下操作:

thebody = [];

Model
    .find({})
    .stream()
    .on('data', function(doc){
        thebody.push({index: {_index: index, _type: type, _id: doc._id}});
        thebody.push(doc);
    })
    .on('close', function () {
        client.bulk({
            body: thebody
        });
    })

我使用bulk功能是因为我认为它比单独索引每个文档更好。 但是,这会导致内存问题(由于thebody的大数组)。

最好单独索引每个元素? 有人知道更好的解决方案吗? (我无法使用河流,因为我的ES版本是2.2)

如果您要索引大量数据,则Bulk API绝对是更快,更高效的方法。

但是,您将能够成功处理的数据量还取决于客户端的配置。 您绝对不会希望保留大量客户端资源。

为什么不批量说10k个文档,则调用.bulk函数。

Mongoosastic: https : //github.com/mongoosastic/mongoosastic/blob/master/README.md

Mongoosastic是一个猫鼬插件,可以自动将您的模型索引到elasticsearch中。 该软件包的最新版本将与最新的elasticsearch和mongoose软件包尽可能接近。

npm install -S mongoosastic

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM