教程:使用生命周期创建数据流

编辑

教程:使用生命周期创建数据流编辑

要创建具有内置生命周期的数据流,请执行以下步骤

创建具有生命周期的索引模板编辑

数据流需要匹配的 索引模板。您可以通过在索引模板中设置 lifecycle 字段来配置数据流生命周期,就像您对映射和索引设置一样。您可以定义一个设置生命周期的索引模板,如下所示

  • 包含 data_stream 对象以启用数据流。
  • 在模板部分定义生命周期,或包含定义生命周期的可组合模板。
  • 使用高于 200 的优先级以避免与内置模板发生冲突。请参阅 避免索引模式冲突

您可以使用 创建索引模板 API

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
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"
  }
}

创建数据流编辑

您可以通过两种方式创建数据流

  1. 使用 创建数据流 API 手动创建流。流的名称仍然必须与您的模板之一的索引模式匹配。

    response = client.indices.create_data_stream(
      name: 'my-data-stream'
    )
    puts response
    PUT _data_stream/my-data-stream
  2. 通过 索引请求 来定位流的名称。此名称必须与您的索引模板之一的索引模式匹配。

    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
    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 查看每个支持索引的确切状态。

response = client.indices.get_data_lifecycle(
  name: 'my-data-stream'
)
puts response
GET _data_stream/my-data-stream/_lifecycle

结果将如下所示

{
  "data_streams": [
    {
      "name": "my-data-stream",
      "lifecycle": {
        "enabled": true,       
        "data_retention": "7d" 
      }
    }
  ]
}

您的数据流的名称。

显示此数据流是否启用了数据流生命周期。

此数据流中索引数据的保留期,这意味着此数据流中的数据将至少保留 7 天。之后,Elasticsearch 可以自行决定将其删除。

如果您想查看有关数据流生命周期如何在单个支持索引上应用的更多信息,请使用 解释数据流生命周期 API

response = client.indices.explain_data_lifecycle(
  index: '.ds-my-data-stream-*'
)
puts 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"
      }
    }
  }
}

支持索引的名称。

如果它由内置数据流生命周期管理。

索引创建后的时间。

应用于此支持索引的生命周期配置。