ロールアップの概要

8.11.0で非推奨

ロールアップは将来のバージョンで削除されます。代わりにダウンサンプリングmigrateしてください。

時間ベースのデータ(主にタイムスタンプで識別されるドキュメント)は、データの成長を管理するために関連する保持ポリシーを持つことがよくあります。たとえば、システムが毎秒500のドキュメントを生成している場合、1日あたり4300万のドキュメント、年間約160億のドキュメントが生成されます。

アナリストやデータサイエンティストは、そのデータを無期限に保存して分析したいと思うかもしれませんが、時間は終わりがなく、ストレージ要件は無限に成長し続けます。したがって、保持ポリシーは通常、時間に対するストレージコストの単純な計算と、組織が歴史的データを保持するために支払う意欲によって決まります。これらのポリシーは、通常、数ヶ月または数年後にデータの削除を開始します。

ストレージコストは固定の量です。Yデータを保存するのにXのお金がかかります。しかし、データの一部の有用性は時間とともに変化することがよくあります。ミリ秒単位で収集されたセンサーデータは、現在非常に有用であり、数週間前のものであれば合理的に有用であり、数ヶ月以上前のものであればわずかに有用です。

したがって、10年前のミリ秒単位のセンサーデータを保存するコストは固定されていますが、その個々のセンサーデータの価値は時間とともに減少することがよくあります。それは無駄ではありません—有用な分析に貢献する可能性がありますが、その価値の減少は、固定のストレージコストを支払うよりも削除につながることがよくあります。

ロールアップは履歴データを低い粒度で保存します

ここでロールアップが登場します。ロールアップ機能は、古い高粒度データを長期保存のために低い粒度形式に要約します。データを単一の要約ドキュメントに「ロールアップ」することで、履歴データは生データと比較して大幅に圧縮できます。

たとえば、毎日4300万のドキュメントを生成するシステムを考えてみましょう。秒単位のデータはリアルタイム分析に役立ちますが、10年間のデータを見ている履歴分析は、時間単位や日単位のトレンドなど、より大きな間隔で作業する可能性があります。

4300万のドキュメントを時間単位の要約に圧縮すれば、大量のスペースを節約できます。ロールアップ機能は、履歴データを要約するこのプロセスを自動化します。

ロールアップの設定と構成に関する詳細は、ジョブ作成APIで説明されています。

ロールアップは標準のクエリDSLを使用します

ロールアップ機能は、ロールアップデータを検索する方法を知っている新しい検索エンドポイント(/_rollup_search対標準/_search)を公開します。重要なことに、このエンドポイントは100%通常のElasticsearch Query DSLを受け入れます。アプリケーションは履歴データを検査するために新しいDSLを学ぶ必要はなく、既存のクエリやダッシュボードを再利用できます。

利用可能な機能にはいくつかの制限があります。すべてのクエリや集計がサポートされているわけではなく、特定の検索機能(ハイライトなど)は無効になっており、利用可能なフィールドはロールアップの設定方法に依存します。これらの制限については、ロールアップ検索の制限で詳しく説明されています。

しかし、クエリ、集計、ダッシュボードが利用可能な機能のみを使用している場合、履歴データへのリダイレクトは簡単です。

ロールアップは「ライブ」と「ロールアップ」データを統合します

ロールアップの便利な機能は、単一のクエリで「ライブ」リアルタイムデータと履歴の「ロールアップ」データの両方をクエリできることです。

たとえば、システムは生データを1ヶ月保持するかもしれません。1ヶ月後、ロールアップを使用して履歴の要約にロールアップされ、生データは削除されます。

生データをクエリすると、最も最近の1ヶ月のデータしか表示されません。そして、ロールアップデータをクエリすると、1ヶ月以上前のデータしか表示されません。しかし、ロールアップ検索エンドポイントは、両方を同時にクエリすることをサポートしています。両方のデータソースからの結果を取得し、それらを統合します。「ライブ」と「ロールアップ」データの間に重複がある場合、精度を高めるためにライブデータが優先されます。

ロールアップはマルチインターバルに対応しています

最後に、ロールアップは利用可能な最適なインターバルを賢く利用することができます。他の製品の要約機能を使用したことがある場合、制限があることがわかるでしょう。日次インターバルでロールアップを設定すると、クエリやチャートは日次インターバルでしか機能しません。月次インターバルが必要な場合は、明示的に月次平均を保存する別のロールアップを作成する必要があります。

ロールアップ機能は、データをそのように保存するため、クエリは最小の利用可能なインターバルを特定し、それを処理に使用できます。日次インターバルでロールアップを保存すると、クエリは日次またはそれ以上のインターバル(週次、月次など)で実行でき、新しいロールアップジョブを明示的に設定する必要がありません。これにより、ロールアップシステムの主要な欠点の1つである生データに対する柔軟性の低下が軽減されます。