データストリームライフサイクル
データストリームライフサイクルは、データストリームがそのライフサイクルを管理するために使用する組み込みメカニズムです。これにより、保持要件に応じてデータストリームの管理を簡単に自動化できます。たとえば、ライフサイクルを次のように構成できます:
- データストリームにインデックスされたデータが、定義した保持時間以上保持されることを保証します。
- 保持期間を超えたデータが、後でElasticsearchによって自動的に削除されることを保証します。
これを実現するために、次のことをサポートしています:
- 自動ロールオーバー、これは、受信データを小さな部分に分割して、パフォーマンスを向上させ、後方互換性のないマッピング変更を容易にします。
- 構成可能な保持、これにより、データが保存されることが保証される期間を構成できます。Elasticsearchは、後でこの期間を超えたデータを削除することが許可されています。
データストリームライフサイクルは、データストリームのバックインデックスのダウンサンプリングもサポートしています。詳細については、ダウンサンプリングの例を参照してください。
どのように機能しますか?
設定された間隔でdata_streams.lifecycle.poll_interval
、Elasticsearchは各データストリームを確認し、次の手順を実行します:
- 1. データストリームにデータストリームライフサイクルが構成されているか確認し、管理されたデータストリームの一部でないインデックスはスキップします。
- 2. データストリームの書き込みインデックスをロールオーバーします。これは
cluster.lifecycle.default.rollover
で定義された条件を満たす場合です。 - 3. インデックスがもはや書き込みインデックスでない場合(つまり、データストリームがロールオーバーされた場合)、自動的にインデックスをテールマージします。データストリームライフサイクルは、小さなセグメントの長いテールをターゲットにしたマージ操作を実行します。セグメントは指数的なサイズの階層に整理されているため、小さなセグメントの長いテールをマージするコストは、単一のセグメントに強制的にマージするコストのほんの一部です。小さなセグメントは通常、最も最近のデータを保持しているため、テールマージは、最もクエリされる可能性が高い高価値データにマージリソースを集中させます。
- 4. ダウンサンプリングが構成されている場合、すべての構成されたダウンサンプリングラウンドを実行します。
- 5. 残りのバックインデックスに保持を適用します。これは、
generation_time
が構成された保持期間よりも長いバックインデックスを削除することを意味します。generation_time
は、ロールオーバーされたバックインデックスにのみ適用され、バックインデックスがロールオーバーされてからの時間、またはindex.lifecycle.origination_date
設定でオプションで構成された時間のいずれかです。
generation_time
を作成時間の代わりに使用するのは、バックインデックス内のすべてのデータが保持期間を過ぎたことを保証するためです。その結果、保持期間はデータが削除される正確な時間ではなく、データが保存される最小の時間となります。
ステップ2-4
は、すでにILMによって管理されていないバックインデックスにのみ適用されます。これは、これらのインデックスがILMポリシーを定義していないか、定義している場合でも、index.lifecycle.prefer_ilm
がfalse
に設定されていることを意味します。
データストリームライフサイクルの構成
ライフサイクルはデータストリームレベルで構成されるため、新しいデータストリームと既存のデータストリームのライフサイクルを構成するプロセスは異なります。
以下のセクションでは、次のチュートリアルを通じて説明します:
- ライフサイクルを持つ新しいデータストリームを作成するには、データストリームの名前に一致するインデックステンプレートの一部としてデータストリームライフサイクルを追加する必要があります(チュートリアル:ライフサイクルを持つデータストリームを作成するを参照)。データストリームの名前を持つ書き込み操作がElasticsearchに到達すると、データストリームはそれぞれのデータストリームライフサイクルで作成されます。
- 既存のデータストリームのライフサイクルを更新するには、データストリームライフサイクルAPIを使用して、データストリーム自体のライフサイクルを編集する必要があります(チュートリアル:既存のデータストリームを更新するを参照)。
- 既存のILM管理データストリームをデータストリームライフサイクルに移行するには、チュートリアル:ILM管理データストリームをデータストリームライフサイクルに移行するを参照してください。
既存のデータストリームのデータストリームライフサイクルを更新することは、設定やマッピングを更新することとは異なります。なぜなら、データストリームレベルで適用され、個々のバックインデックスではなく、データストリームレベルで適用されるからです。