データストリームのライフサイクルを設定する
ターゲットとする データストリーム のためにデータストリーム ライフサイクル を構成します。
前提条件
Elasticsearch のセキュリティ機能が有効になっている場合、この API を使用するには manage_data_stream_lifecycle
インデックス権限以上が必要です。詳細については、セキュリティ権限 を参照してください。
リクエスト
PUT _data_stream/<data-stream>/_lifecycle
説明
ターゲットとするデータストリームのライフサイクルを構成します。複数のデータストリームが提供されている場合、少なくとも1つが存在しないと、すべてのデータストリームのライフサイクルの更新は失敗し、API は 404
で応答します。
パスパラメータ
<data-stream>
- (必須、文字列) リクエストを制限するために使用されるデータストリームのカンマ区切りリスト。ワイルドカード (
*
) をサポートします。すべてのデータストリームをターゲットにするには*
または_all
を使用します。
クエリパラメータ
expand_wildcards
- (オプション、文字列) ワイルドカードパターンが一致できるデータストリームのタイプ。カンマ区切りの値をサポートします。例:
open,hidden
。有効な値は:all
,hidden
- 隠し データストリームを含む任意のデータストリームに一致します。
open
,closed
- 隠されていない任意のデータストリームに一致します。データストリームは閉じることができません。
none
- ワイルドカードパターンは受け付けられません。
デフォルトはopen
です。
リクエストボディ
lifecycle
- (必須、オブジェクト)
lifecycle
のプロパティdata_retention
- (オプション、文字列) 定義されている場合、このデータストリームに追加されたすべてのドキュメントは、この期間中は少なくとも保存されます。この期間を過ぎた後、ドキュメントは削除される可能性があります。空の場合、このデータストリーム内のすべてのドキュメントは無期限に保存されます。
enabled
- (オプション、ブール値) 定義されている場合、このデータストリームのデータストリームライフサイクルをオン/オフ (
true
/false
) にします。無効なデータストリームライフサイクル (enabled: false
) はデータストリームに影響を与えません。デフォルトはtrue
です。 downsampling
- (オプション、配列) 各
after
インターバルを定義するダウンサンプリング構成オブジェクトのオプションの配列。これは、バックインデックスがダウンサンプリングされることを意図している時間枠(インデックスがロールオーバーされた時点から計算されます、すなわち世代時間)を表し、ダウンサンプリングインターバルを表すfixed_interval
(最小fixed_interval
値は5m
です)。最大10回のダウンサンプリングラウンドを構成できます。以下の 構成例 を参照してください。
例
以下の例は my-data-stream
のライフサイクルを設定します:
Python
resp = client.indices.put_data_lifecycle(
name="my-data-stream",
data_retention="7d",
)
print(resp)
Ruby
response = client.indices.put_data_lifecycle(
name: 'my-data-stream',
body: {
data_retention: '7d'
}
)
puts response
Js
const response = await client.indices.putDataLifecycle({
name: "my-data-stream",
data_retention: "7d",
});
console.log(response);
コンソール
PUT _data_stream/my-data-stream/_lifecycle
{
"data_retention": "7d"
}
すべてのデータストリームでライフサイクルが正常に更新されると、次の結果が得られます:
コンソール-結果
{
"acknowledged": true
}
例
以下の例は、バックインデックスがロールオーバーされた1日後(または、インデックスがまだ書き込みを受け入れている 時間制約 の範囲内であればそれ以降)に開始される最初のダウンサンプリングラウンドを構成し、10m
のインターバルを持ち、ロールオーバーから7日後に 1d
のインターバルで開始される2回目のラウンドを構成します:
Python
resp = client.indices.put_data_lifecycle(
name="my-weather-sensor-data-stream",
downsampling=[
{
"after": "1d",
"fixed_interval": "10m"
},
{
"after": "7d",
"fixed_interval": "1d"
}
],
)
print(resp)
Ruby
response = client.indices.put_data_lifecycle(
name: 'my-weather-sensor-data-stream',
body: {
downsampling: [
{
after: '1d',
fixed_interval: '10m'
},
{
after: '7d',
fixed_interval: '1d'
}
]
}
)
puts response
Js
const response = await client.indices.putDataLifecycle({
name: "my-weather-sensor-data-stream",
downsampling: [
{
after: "1d",
fixed_interval: "10m",
},
{
after: "7d",
fixed_interval: "1d",
},
],
});
console.log(response);
コンソール
PUT _data_stream/my-weather-sensor-data-stream/_lifecycle
{
"downsampling": [
{
"after": "1d",
"fixed_interval": "10m"
},
{
"after": "7d",
"fixed_interval": "1d"
}
]
}