現在実行中のインデックスを下げることなく、増え続けるドキュメントのコーパス (現在は数千万件、1 年以内に数億件) を Solr で体系的に再インデックスする方法について、いくつかの推奨事項を探しています。次の理由により、定期的にインデックスを再作成する必要があります。
- 追加のスキーマ フィールドを必要とする既存のコーパスの検索に関する新機能が導入されましたが、これは常に事前に予測することはできません。
- コーパスは、複数のシャードにわたって索引付けされています。一定のしきい値を超えて成長すると、さらに多くのシャードを作成し、それらすべてに均等にドキュメントのバランスを再調整する必要があります (SolrCloud はまだサポートしていないようです)。
現在のインデックスは非常に頻繁に更新や追加が行われるため、数分以内に検索できるようにする必要があります。したがって、コーパスがバッチ オフラインで再インデックス化されるアプローチは、バッチが終了するまでに新しいドキュメントが利用可能になるため、実際には機能しません。
現時点で検討しているアプローチは次のとおりです。
- シャードの新しいクラスターを作成し、古いクラスターがまだ検索に使用できる間に、そこでバッチ再インデックスを作成します。再インデックスされたバッチの一部ではない新しいドキュメントは、古いクラスターと新しいクラスターの両方に送信されます。切り替える準備ができたら、ロード バランサーを新しいクラスターに向けます。
- CoreAdmin を使用します。シャードごとに新しいコアを生成し、インデックスを再作成したバッチを新しいコアに送信します。再インデックスされたバッチの一部ではない新しいドキュメントは、古いコアと新しいコアの両方に送信されます。切り替える準備ができたら、CoreAdmin を使用して動的にコアを交換します。
これらのアプローチのいずれかまたはすべてについて、確認するか穴を開けていただけると幸いです。どちらが適切ですか?それとも完全にオフですか?前もって感謝します。