2017-08-25 7 views
1

MongoDBに私がElasticsearchに索引をつけているコレクションがあります。私はC#のプロセスでこれをやっています。コレクションには1億のドキュメントがあり、各ドキュメントについて、Elasticsearchインデックスに正規化されないように他のドキュメントをクエリする必要があります。MongoDBコレクション全体をElastcticsearchに素早く索引付けする

これはすべて時間がかかります。 MongoDBからの読み込みは遅い(索引付けは比較的速い)。私はできる限り効率的にMongoDBからデータをバッチしていますが、プロセスは2日以上かかります。

これは、Elasticsearchのマッピングが変更された場合にのみ発生することがありますが、先月に何度か発生しました。 これを改善する方法はありますか?

+0

既にこのデータを「_bulk」APIを使用してElasticsearchにインポートしていますか? –

+0

私は正しいです、あなたはmongoからelasticsearchにいくつかのデータをインポートします。次に、elasticsearchマッピングの変更が必要な場合は、古いデータを削除し、更新されたマッピングを使用して新しいelasticsearchインデックスにインポートを開始しますか? – froosty

+0

@BrunoHenriqueこれはバルクAPIを使用していませんが、実際には遅いインデックスではありません.MongoDBからの読み取りです。 –

答えて

0

マッピングを変更すると、最初からインポートをインポートする必要はありません(私はMongoDBからインポートすることを意味します)。この読み:Elasticsearch Reindex API

をあなたがあなたをしなければならないマッピング変更する必要がある場合:

  1. ビルトインelasticsearchの機能を使用して、新しいインデックスに新しいマッピングと、古いインデックスから
  2. 再インデックスデータを新しいインデックスを作成します。 。

この古い文書の後に、新しい索引内の新しいマッピングで索引付けされます。 elasticsearchに組み込まれた再インデックスは、HTTP API経由でMongoDBからインポートするよりも速く動作します。

再インデックスを使用する場合は、パラメータwait_for_completion(このパラメータはドキュメントに記載されています)を使用することを忘れないでください。これはバックグラウンドで再インデックスを実行します。

あなたの問題を解決する方法はありますか?

関連する問題