1

ばかげた質問をして申し訳ありませんが、解決策がわかりません。私はmongodbにデータを保存しており、コレクションはrichardwillyのプラグインを使用してesインデックスにマップされています。ただし、いくつかのインデックスが台無しになっています (そのため、表示されると予想されるすべてのデータが es にあるわけではありません (まだ mongodb にあります))。ダミー データにダミー インデックスを作成しようとしましたが、インデックスを再作成すると、このデータが es に表示されるようになると思います。

問題は、mongo 川が oplog で動作し、インデックスを削除した後、次の最初の新しいドキュメントを挿入した後、mongodb の他の数千のドキュメントを表示して、es で自動的に表示されるようにしたいことです。ただし、インデックスを削除して再作成した後に挿入したドキュメントしか表示されません。他の数千のドキュメントは、mongo では表示されますが、es では表示されません。

小さな実験を行ったところ、実際に 500 個のドキュメントを再挿入すると、elasticsearch でそれらが表示されることがわかりました (インデックスがすべてを許可するのに適切な場合)。削除して再挿入することなくインデックスを再作成した後、mongodb のデータを es で表示できるようにする方法を教えてください。oplog を再生する必要がありますか、または削除して再挿入せずにこのデータを es に取得できるように提案できる別のアプローチはありますか?

ありがとう!

4

3 に答える 3

2

あなたが言うように、MongoDB リバーは Mongo の oplog を使用して機能します。つまり、ドキュメントへの変更を Elastic にのみインデックス化できます。(Mongo インデックスへの変更は oplog には関係ありません) 最初の oplog エントリの前に作成されたドキュメントをインデックス化するには、別の方法を見つける必要があります。

削除して再挿入したくない場合は、既存のドキュメントに対して一括更新を実行できます。

または、Elastic で最初のドキュメントを見つけ、Mongo にクエリを実行して以前のドキュメントを見つけ、欠落しているドキュメントにインデックスを付けるツールを実装することもできます。

于 2012-10-01T06:53:03.577 に答える
0

私自身の質問に答えると、elasticsearch コミュニティに助けられました。川を削除して新しい川を作成すると、マップ先のコレクション内のすべてのデータが Elasticsearch インデックスで利用できるようになります。

于 2012-10-01T21:09:54.823 に答える