ダウンサンプルインデックスAPI
時間系列(TSDS)インデックスを集約し、構成された時間間隔でグループ化された各メトリックフィールドの事前計算された統計要約(min
、max
、sum
、value_count
、avg
)を保存します。たとえば、10秒ごとにサンプリングされたメトリックを含むTSDSインデックスは、時間単位のインデックスにダウンサンプルできます。1時間の間隔内のすべてのドキュメントは要約され、ダウンサンプルインデックス内の単一のドキュメントとして保存されます。
Python
resp = client.indices.downsample(
index="my-time-series-index",
target_index="my-downsampled-time-series-index",
config={
"fixed_interval": "1d"
},
)
print(resp)
Ruby
response = client.indices.downsample(
index: 'my-time-series-index',
target_index: 'my-downsampled-time-series-index',
body: {
fixed_interval: '1d'
}
)
puts response
Js
const response = await client.indices.downsample({
index: "my-time-series-index",
target_index: "my-downsampled-time-series-index",
config: {
fixed_interval: "1d",
},
});
console.log(response);
コンソール
POST /my-time-series-index/_downsample/my-downsampled-time-series-index
{
"fixed_interval": "1d"
}
リクエスト
POST /<source-index>/_downsample/<output-downsampled-index>
前提条件
- タイムシリーズデータストリーム内のインデックスのみがサポートされています。
- Elasticsearchのセキュリティ機能が有効になっている場合、データストリームに対して
all
またはmanage
インデックス特権を持っている必要があります。 - ソースインデックスに対してフィールドまたはドキュメントレベルのセキュリティを定義することはできません。
- ソースインデックスは読み取り専用である必要があります(
index.blocks.write: true
)。
パスパラメータ
<source-index>
- (オプション、文字列)ダウンサンプルするタイムシリーズインデックスの名前。
<output-downsampled_index>
- (必須、文字列)作成するインデックスの名前。
インデックス名は次の基準を満たす必要があります:- 小文字のみ
\
、/
、*
、?
、"
、<
、>
、|
、,
、#
を含むことはできません- 7.0以前のインデックスにはコロン(
:
)を含めることができましたが、これは非推奨となり、7.0以降はサポートされません -
、_
、+
で始めることはできません.
または..
であることはできません- 255バイトを超えることはできません(バイト数であるため、マルチバイト文字は255の制限に早くカウントされます)
.
で始まる名前は非推奨ですが、隠しインデックスおよびプラグインによって管理される内部インデックスを除きます
クエリパラメータ
fixed_interval
- (必須、時間単位)元のタイムシリーズインデックスを集約する間隔。たとえば、
60m
は60分(時間単位)ごとにドキュメントを生成します。これは、Elasticsearchの他の場所で使用される標準的な時間フォーマット構文に従います。
より小さく、より詳細な間隔は、比例的により多くのスペースを占有します。
ダウンサンプリングプロセス
ダウンサンプリング操作は、ソースTSDSインデックスを横断し、次の手順を実行します:
- 1.
_tsid
フィールドの各値と各@timestamp
値に対して新しいドキュメントを作成し、ダウンサンプル構成で定義されたfixed_interval
に丸めます。 - 2. 各新しいドキュメントについて、ソースインデックスからターゲットインデックスにすべてのタイムシリーズ次元をコピーします。TSDSの次元は一定であるため、これはバケットごとに1回だけ行われます。
- 3. 各タイムシリーズメトリックフィールドについて、バケット内のすべてのドキュメントの集約を計算します。各メトリックフィールドのメトリックタイプに応じて、異なるセットの事前集約結果が保存されます:
gauge
:min
、max
、sum
、value_count
が保存され、value_count
はaggregate_metric_double
型として保存されます。counter
:last_value
が保存されます。
- 4. その他のすべてのフィールドについて、最も最近の値がターゲットインデックスにコピーされます。
ソースおよびターゲットインデックスフィールドマッピング
ターゲットのダウンサンプルインデックスのフィールドは、元のソースインデックスのフィールドに基づいて作成されます。次のように:
- 1.
time-series-dimension
パラメータでマッピングされたすべてのフィールドは、ソースインデックスと同じマッピングでターゲットダウンサンプルインデックスに作成されます。 - 2.
time_series_metric
パラメータでマッピングされたすべてのフィールドは、ソースインデックスと同じマッピングでターゲットダウンサンプルインデックスに作成されます。例外として、time_series_metric: gauge
としてマッピングされたフィールドのフィールドタイプはaggregate_metric_double
に変更されます。 - 3. 次元でもメトリックでもないすべての他のフィールド(つまり、ラベルフィールド)は、ソースインデックスで持っていたのと同じマッピングでターゲットダウンサンプルインデックスに作成されます。
ダウンサンプリングを手動で実行する方法やILMポリシーの一部として実行する方法の概要と例については、ダウンサンプリングのドキュメントを確認してください。