簡體   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