2012-01-28 7 views
0

私はcsvファイルから読み込み、elasticsearchインデックスにデータを挿入しようとしています。以下のように、私はreadstreamを使い、 "data"イベントをリッスンします。私の問題は、私はすぐにこのアプローチを使用してメモリが不足しているということです。私はそれがelasticsearchモジュール(弾力性)が毎回RESTを作り、そのような要求の数が増えていることを推測しています。Node.js - 検索インデックスを呼び出すときにメモリが不足する

私はかなり新しいので、これを修正してメモリ不足にならない方法がありますか?どんな一般的なパターンやテクニックですか?

stream.on('data', function (doc) { 
    // create a json from doc 
    client.index('entities', 'command', json, function (err, res) { 
     console.log(res); 
    }); 
} 

答えて

0

データの取得時にストリームを一時停止し、要求が完了したらストリームを再開します。あなたのコードについて

stream.on('data', function (doc) { 
    stream.pause(); 
    // create a json from doc 
    client.index('entities', 'command', json, function (err, res) { 
     stream.resume(); 
     console.log(res); 
    }); 
} 

奇妙なことは、あなたがその関数内のどこdocを使用していないです。私はあなたのコード全体を投稿していないと思います。

+0

確かに、私はスケルトンを投稿しました。私はdocからvar jsonを作成する部分を省略しました。しかし、これをしても私はまだメモリの問題にぶつかっています。コールバック関数から直接stream.resumeを呼び出すことはできますか? – quain

+0

'stream'がコールバックに表示されている場合はYesです。 – fent

関連する問題