チュートリアル: ライフサイクルを持つデータストリームの作成
ライフサイクルを持つデータストリームを作成するには、次の手順に従います:
- 1. インデックステンプレートを作成
- 2. データストリームを作成
- 3. ライフサイクル情報を取得
インデックステンプレートの作成
データストリームには、対応する インデックステンプレート が必要です。インデックステンプレート内の lifecycle
フィールドを設定することで、データストリームのライフサイクルをマッピングやインデックス設定と同様に構成できます。ライフサイクルを設定するインデックステンプレートを次のように定義できます:
- データストリームを有効にするために
data_stream
オブジェクトを含めます。 - テンプレートセクションでライフサイクルを定義するか、ライフサイクルを定義するコンポーザブルテンプレートを含めます。
- ビルトインテンプレートとの衝突を避けるために
200
よりも高い優先度を使用します。 インデックスパターンの衝突を避ける を参照してください。
インデックステンプレート作成API を使用できます。
Python
resp = client.indices.put_index_template(
name="my-index-template",
index_patterns=[
"my-data-stream*"
],
data_stream={},
priority=500,
template={
"lifecycle": {
"data_retention": "7d"
}
},
meta={
"description": "Template with data stream lifecycle"
},
)
print(resp)
Ruby
response = client.indices.put_index_template(
name: 'my-index-template',
body: {
index_patterns: [
'my-data-stream*'
],
data_stream: {},
priority: 500,
template: {
lifecycle: {
data_retention: '7d'
}
},
_meta: {
description: 'Template with data stream lifecycle'
}
}
)
puts response
Js
const response = await client.indices.putIndexTemplate({
name: "my-index-template",
index_patterns: ["my-data-stream*"],
data_stream: {},
priority: 500,
template: {
lifecycle: {
data_retention: "7d",
},
},
_meta: {
description: "Template with data stream lifecycle",
},
});
console.log(response);
コンソール
PUT _index_template/my-index-template
{
"index_patterns": ["my-data-stream*"],
"data_stream": { },
"priority": 500,
"template": {
"lifecycle": {
"data_retention": "7d"
}
},
"_meta": {
"description": "Template with data stream lifecycle"
}
}
データストリームの作成
データストリームは2つの方法で作成できます:
- 1. データストリーム作成API を使用して手動でストリームを作成します。ストリームの名前は、テンプレートのインデックスパターンの1つと一致する必要があります。
Python
resp = client.indices.create_data_stream(
name="my-data-stream",
)
print(resp)
Ruby
response = client.indices.create_data_stream(
name: 'my-data-stream'
)
puts response
Js
const response = await client.indices.createDataStream({
name: "my-data-stream",
});
console.log(response);
コンソール
PUT _data_stream/my-data-stream
- 2. ストリームの名前をターゲットにした インデックスリクエスト によって。この名前は、インデックステンプレートのインデックスパターンの1つと一致する必要があります。
Python
resp = client.bulk(
index="my-data-stream",
operations=[
{
"create": {}
},
{
"@timestamp": "2099-05-06T16:21:15.000Z",
"message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
},
{
"create": {}
},
{
"@timestamp": "2099-05-06T16:25:42.000Z",
"message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638"
}
],
)
print(resp)
Ruby
response = client.bulk(
index: 'my-data-stream',
body: [
{
create: {}
},
{
"@timestamp": '2099-05-06T16:21:15.000Z',
message: '192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736'
},
{
create: {}
},
{
"@timestamp": '2099-05-06T16:25:42.000Z',
message: '192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638'
}
]
)
puts response
Js
const response = await client.bulk({
index: "my-data-stream",
operations: [
{
create: {},
},
{
"@timestamp": "2099-05-06T16:21:15.000Z",
message:
'192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736',
},
{
create: {},
},
{
"@timestamp": "2099-05-06T16:25:42.000Z",
message:
'192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638',
},
],
});
console.log(response);
コンソール
PUT my-data-stream/_bulk
{ "create":{ } }
{ "@timestamp": "2099-05-06T16:21:15.000Z", "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736" }
{ "create":{ } }
{ "@timestamp": "2099-05-06T16:25:42.000Z", "message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" }
ライフサイクル情報の取得
データストリームライフサイクル取得API を使用して、データストリームのライフサイクルを確認し、データストリームライフサイクル説明API を使用して各バックインデックスの正確な状態を確認できます。
Python
resp = client.indices.get_data_lifecycle(
name="my-data-stream",
)
print(resp)
Ruby
response = client.indices.get_data_lifecycle(
name: 'my-data-stream'
)
puts response
Js
const response = await client.indices.getDataLifecycle({
name: "my-data-stream",
});
console.log(response);
コンソール
GET _data_stream/my-data-stream/_lifecycle
コンソール-結果
{
"data_streams": [
{
"name": "my-data-stream",
"lifecycle": {
"enabled": true,
"data_retention": "7d"
}
}
]
}
データストリームの名前。 | |
このデータストリームに対してライフサイクルが有効かどうかを示します。 | |
このデータストリームにインデックスされたデータの保持期間、これはこのデータストリームのデータが少なくとも7日間保持されることを意味します。その後、Elasticsearchは独自の裁量で削除できます。 |
個々のバックインデックスに対してデータストリームライフサイクルがどのように適用されるかについての詳細情報を確認したい場合は、データストリームライフサイクル説明API を使用してください:
Python
resp = client.indices.explain_data_lifecycle(
index=".ds-my-data-stream-*",
)
print(resp)
Ruby
response = client.indices.explain_data_lifecycle(
index: '.ds-my-data-stream-*'
)
puts response
Js
const response = await client.indices.explainDataLifecycle({
index: ".ds-my-data-stream-*",
});
console.log(response);
コンソール
GET .ds-my-data-stream-*/_lifecycle/explain
コンソール-結果
{
"indices": {
".ds-my-data-stream-2023.04.19-000001": {
"index": ".ds-my-data-stream-2023.04.19-000001",
"managed_by_lifecycle": true,
"index_creation_date_millis": 1681918009501,
"time_since_index_creation": "1.6m",
"lifecycle": {
"enabled": true,
"data_retention": "7d"
}
}
}
}
バックインデックスの名前。 | |
ビルトインデータストリームライフサイクルによって管理されているかどうか。 | |
インデックスが作成されてからの時間。 | |
このバックインデックスに適用されるライフサイクル設定。 |