チュートリアル: ライフサイクルを持つデータストリームの作成

ライフサイクルを持つデータストリームを作成するには、次の手順に従います:

インデックステンプレートの作成

データストリームには、対応する インデックステンプレート が必要です。インデックステンプレート内の lifecycle フィールドを設定することで、データストリームのライフサイクルをマッピングやインデックス設定と同様に構成できます。ライフサイクルを設定するインデックステンプレートを次のように定義できます:

  • データストリームを有効にするために data_stream オブジェクトを含めます。
  • テンプレートセクションでライフサイクルを定義するか、ライフサイクルを定義するコンポーザブルテンプレートを含めます。
  • ビルトインテンプレートとの衝突を避けるために 200 よりも高い優先度を使用します。 インデックスパターンの衝突を避ける を参照してください。

インデックステンプレート作成API を使用できます。

Python

  1. resp = client.indices.put_index_template(
  2. name="my-index-template",
  3. index_patterns=[
  4. "my-data-stream*"
  5. ],
  6. data_stream={},
  7. priority=500,
  8. template={
  9. "lifecycle": {
  10. "data_retention": "7d"
  11. }
  12. },
  13. meta={
  14. "description": "Template with data stream lifecycle"
  15. },
  16. )
  17. print(resp)

Ruby

  1. response = client.indices.put_index_template(
  2. name: 'my-index-template',
  3. body: {
  4. index_patterns: [
  5. 'my-data-stream*'
  6. ],
  7. data_stream: {},
  8. priority: 500,
  9. template: {
  10. lifecycle: {
  11. data_retention: '7d'
  12. }
  13. },
  14. _meta: {
  15. description: 'Template with data stream lifecycle'
  16. }
  17. }
  18. )
  19. puts response

Js

  1. const response = await client.indices.putIndexTemplate({
  2. name: "my-index-template",
  3. index_patterns: ["my-data-stream*"],
  4. data_stream: {},
  5. priority: 500,
  6. template: {
  7. lifecycle: {
  8. data_retention: "7d",
  9. },
  10. },
  11. _meta: {
  12. description: "Template with data stream lifecycle",
  13. },
  14. });
  15. console.log(response);

コンソール

  1. PUT _index_template/my-index-template
  2. {
  3. "index_patterns": ["my-data-stream*"],
  4. "data_stream": { },
  5. "priority": 500,
  6. "template": {
  7. "lifecycle": {
  8. "data_retention": "7d"
  9. }
  10. },
  11. "_meta": {
  12. "description": "Template with data stream lifecycle"
  13. }
  14. }

データストリームの作成

データストリームは2つの方法で作成できます:

  • 1. データストリーム作成API を使用して手動でストリームを作成します。ストリームの名前は、テンプレートのインデックスパターンの1つと一致する必要があります。

Python

  1. resp = client.indices.create_data_stream(
  2. name="my-data-stream",
  3. )
  4. print(resp)

Ruby

  1. response = client.indices.create_data_stream(
  2. name: 'my-data-stream'
  3. )
  4. puts response

Js

  1. const response = await client.indices.createDataStream({
  2. name: "my-data-stream",
  3. });
  4. console.log(response);

コンソール

  1. PUT _data_stream/my-data-stream
  • 2. ストリームの名前をターゲットにした インデックスリクエスト によって。この名前は、インデックステンプレートのインデックスパターンの1つと一致する必要があります。

Python

  1. resp = client.bulk(
  2. index="my-data-stream",
  3. operations=[
  4. {
  5. "create": {}
  6. },
  7. {
  8. "@timestamp": "2099-05-06T16:21:15.000Z",
  9. "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
  10. },
  11. {
  12. "create": {}
  13. },
  14. {
  15. "@timestamp": "2099-05-06T16:25:42.000Z",
  16. "message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638"
  17. }
  18. ],
  19. )
  20. print(resp)

Ruby

  1. response = client.bulk(
  2. index: 'my-data-stream',
  3. body: [
  4. {
  5. create: {}
  6. },
  7. {
  8. "@timestamp": '2099-05-06T16:21:15.000Z',
  9. message: '192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736'
  10. },
  11. {
  12. create: {}
  13. },
  14. {
  15. "@timestamp": '2099-05-06T16:25:42.000Z',
  16. message: '192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638'
  17. }
  18. ]
  19. )
  20. puts response

Js

  1. const response = await client.bulk({
  2. index: "my-data-stream",
  3. operations: [
  4. {
  5. create: {},
  6. },
  7. {
  8. "@timestamp": "2099-05-06T16:21:15.000Z",
  9. message:
  10. '192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736',
  11. },
  12. {
  13. create: {},
  14. },
  15. {
  16. "@timestamp": "2099-05-06T16:25:42.000Z",
  17. message:
  18. '192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638',
  19. },
  20. ],
  21. });
  22. console.log(response);

コンソール

  1. PUT my-data-stream/_bulk
  2. { "create":{ } }
  3. { "@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" }
  4. { "create":{ } }
  5. { "@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

  1. resp = client.indices.get_data_lifecycle(
  2. name="my-data-stream",
  3. )
  4. print(resp)

Ruby

  1. response = client.indices.get_data_lifecycle(
  2. name: 'my-data-stream'
  3. )
  4. puts response

Js

  1. const response = await client.indices.getDataLifecycle({
  2. name: "my-data-stream",
  3. });
  4. console.log(response);

コンソール

  1. GET _data_stream/my-data-stream/_lifecycle

結果は次のようになります:

コンソール-結果

  1. {
  2. "data_streams": [
  3. {
  4. "name": "my-data-stream",
  5. "lifecycle": {
  6. "enabled": true,
  7. "data_retention": "7d"
  8. }
  9. }
  10. ]
  11. }
データストリームの名前。
このデータストリームに対してライフサイクルが有効かどうかを示します。
このデータストリームにインデックスされたデータの保持期間、これはこのデータストリームのデータが少なくとも7日間保持されることを意味します。その後、Elasticsearchは独自の裁量で削除できます。

個々のバックインデックスに対してデータストリームライフサイクルがどのように適用されるかについての詳細情報を確認したい場合は、データストリームライフサイクル説明API を使用してください:

Python

  1. resp = client.indices.explain_data_lifecycle(
  2. index=".ds-my-data-stream-*",
  3. )
  4. print(resp)

Ruby

  1. response = client.indices.explain_data_lifecycle(
  2. index: '.ds-my-data-stream-*'
  3. )
  4. puts response

Js

  1. const response = await client.indices.explainDataLifecycle({
  2. index: ".ds-my-data-stream-*",
  3. });
  4. console.log(response);

コンソール

  1. GET .ds-my-data-stream-*/_lifecycle/explain

結果は次のようになります:

コンソール-結果

  1. {
  2. "indices": {
  3. ".ds-my-data-stream-2023.04.19-000001": {
  4. "index": ".ds-my-data-stream-2023.04.19-000001",
  5. "managed_by_lifecycle": true,
  6. "index_creation_date_millis": 1681918009501,
  7. "time_since_index_creation": "1.6m",
  8. "lifecycle": {
  9. "enabled": true,
  10. "data_retention": "7d"
  11. }
  12. }
  13. }
  14. }
バックインデックスの名前。
ビルトインデータストリームライフサイクルによって管理されているかどうか。
インデックスが作成されてからの時間。
このバックインデックスに適用されるライフサイクル設定。