履歴保持

Elasticsearch は、シャードで実行された操作の一部を再生する必要がある場合があります。たとえば、レプリカが一時的にオフラインの場合、オフライン中に見逃したいくつかの操作を再生する方が、最初から再構築するよりもはるかに効率的です。同様に、クロスクラスターレプリケーションは、リーダークラスタで操作を実行し、その後フォロワークラスタでそれらの操作を再生することによって機能します。

Lucene レベルでは、Elasticsearch がインデックスに対して実行する書き込み操作は実際には 2 つだけです: 新しいドキュメントがインデックスされるか、既存のドキュメントが削除されるかです。更新は、古いドキュメントを原子的に削除し、新しいドキュメントをインデックスすることによって実装されます。Lucene にインデックスされたドキュメントには、そのインデックス操作を再生するために必要なすべての情報がすでに含まれていますが、ドキュメントの削除には当てはまりません。これを解決するために、Elasticsearch は ソフト削除 と呼ばれる機能を使用して、最近の削除を Lucene インデックスに保持し、それらを再生できるようにします。

Elasticsearch は、ソフト削除されたドキュメントがまだいくらかのスペースを占有するため、インデックス内の特定の最近削除されたドキュメントのみを保持します。最終的に、Elasticsearch はこれらのソフト削除されたドキュメントを完全に破棄して、そのスペースを解放し、インデックスが時間とともに大きくなりすぎないようにします。幸いなことに、Elasticsearch はシャードで実行されたすべての操作を再生する必要はなく、リモートノードにシャードの完全なコピーを作成することが常に可能です。ただし、シャード全体をコピーするのには、いくつかの欠落した操作を再生するよりもはるかに長い時間がかかる場合があるため、Elasticsearch は将来再生する必要があると予想されるすべての操作を保持しようとします。

Elasticsearch は、シャード履歴保持リース と呼ばれるメカニズムを使用して、将来再生する必要があると予想される操作を追跡します。操作を再生する必要がある可能性のある各シャードコピーは、まず自分自身のシャード履歴保持リースを作成する必要があります。たとえば、このシャードコピーはシャードのレプリカであるか、クロスクラスターレプリケーションを使用しているときのフォロワーインデックスのシャードである可能性があります。各保持リースは、対応するシャードコピーが受信していない最初の操作のシーケンス番号を追跡します。シャードコピーが新しい操作を受信すると、その保持リースに含まれるシーケンス番号を増加させ、将来それらの操作を再生する必要がないことを示します。Elasticsearch は、ソフト削除された操作が保持リースによって保持されなくなると、それらを破棄します。

シャードコピーが失敗すると、そのシャード履歴保持リースの更新を停止します。これは、Elasticsearch がすべての新しい操作を保持し、失敗したシャードコピーが回復したときに再生できるようにすることを意味します。ただし、保持リースは限られた時間しか持続しません。シャードコピーが十分に早く回復しない場合、その保持リースは期限切れになる可能性があります。これは、シャードコピーが永久に失敗した場合に履歴を永遠に保持することから Elasticsearch を保護します。保持リースが期限切れになると、Elasticsearch は再び履歴を破棄し始めることができます。保持リースが期限切れた後にシャードコピーが回復すると、Elasticsearch は欠落した履歴を単純に再生できなくなるため、インデックス全体をコピーすることに戻ります。保持リースの期限は 12h にデフォルト設定されており、ほとんどの合理的な回復シナリオに対して十分に長いはずです。

履歴保持設定

  • index.soft_deletes.enabled
  • [7.6.0] 7.6.0 で非推奨。ソフト削除を無効にしてインデックスを作成することは非推奨であり、将来の Elasticsearch バージョンで削除されます。 インデックスでソフト削除が有効になっているかどうかを示します。ソフト削除は、インデックス作成時にのみ設定でき、Elasticsearch 6.5.0 以降に作成されたインデックスでのみ設定できます。デフォルトは true です。
  • index.soft_deletes.retention_lease.period
  • シャード履歴保持リースが期限切れと見なされる前に保持する最大期間。シャード履歴保持リースは、Lucene インデックスのマージ中にソフト削除が保持されることを保証します。ソフト削除がフォロワーに複製される前にマージされると、リーダーの履歴が不完全なため、次のプロセスは失敗します。デフォルトは 12h です。