教程:更新现有数据流

编辑

要更新现有数据流的生命周期,请执行以下操作

设置数据流的生命周期

编辑

要添加或更改数据流的保留期,可以使用 PUT lifecycle API

  • 您可以设置无限的保留期,这意味着您的数据永远不会被删除。例如

    resp = client.indices.put_data_lifecycle(
        name="my-data-stream",
    )
    print(resp)
    response = client.indices.put_data_lifecycle(
      name: 'my-data-stream',
      body: {}
    )
    puts response
    const response = await client.indices.putDataLifecycle({
      name: "my-data-stream",
    });
    console.log(response);
    PUT _data_stream/my-data-stream/_lifecycle
    { } 

    一个空的有效负载意味着您的数据流仍然被管理,但数据永远不会被删除。管理时间序列数据流(如日志或指标)使 Elasticsearch 能够更好地存储您的数据,即使您不使用保留期。

  • 或者您可以设置您选择的保留期。例如

    resp = client.indices.put_data_lifecycle(
        name="my-data-stream",
        data_retention="30d",
    )
    print(resp)
    response = client.indices.put_data_lifecycle(
      name: 'my-data-stream',
      body: {
        data_retention: '30d'
      }
    )
    puts response
    const response = await client.indices.putDataLifecycle({
      name: "my-data-stream",
      data_retention: "30d",
    });
    console.log(response);
    PUT _data_stream/my-data-stream/_lifecycle
    {
      "data_retention": "30d" 
    }

    此数据流的保留期设置为 30 天。这意味着 Elasticsearch 可以在它认为合适的时候删除早于 30 天的数据。

生命周期的更改会应用于数据流的所有后备索引。您可以通过 explain API 查看更改的效果

resp = client.indices.explain_data_lifecycle(
    index=".ds-my-data-stream-*",
)
print(resp)
response = client.indices.explain_data_lifecycle(
  index: '.ds-my-data-stream-*'
)
puts response
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-000002": {
      "index": ".ds-my-data-stream-2023.04.19-000002",  
      "managed_by_lifecycle": true,                           
      "index_creation_date_millis": 1681919221417,
      "time_since_index_creation": "6.85s",             
      "lifecycle": {
        "enabled": true,
        "data_retention": "30d"                         
      }
    },
    ".ds-my-data-stream-2023.04.17-000001": {
      "index": ".ds-my-data-stream-2023.04.17-000001",  
      "managed_by_lifecycle": true,                           
      "index_creation_date_millis": 1681745209501,
      "time_since_index_creation": "48d",               
      "rollover_date_millis": 1681919221419,
      "time_since_rollover": "6.84s",                   
      "generation_time": "6.84s",                       
      "lifecycle": {
        "enabled": true,
        "data_retention": "30d"                         
      }
    }
  }
}

后备索引的名称。

此索引由数据流生命周期管理。

自创建此索引以来经过的时间。

此索引的数据保留期至少为 30 天,因为它最近已更新。

后备索引的名称。

此索引由内置数据流生命周期管理。

自创建此索引以来经过的时间。

自此索引滚动更新以来经过的时间。

将用于确定何时可以安全删除此索引及其所有数据的时间。

此索引的数据保留期也至少为 30 天,因为它最近已更新。

删除数据流的生命周期

编辑

要删除数据流的生命周期,可以使用 delete lifecycle API。结果,生命周期应用的维护操作将不再应用于数据流及其所有后备索引。例如

resp = client.indices.delete_data_lifecycle(
    name="my-data-stream",
)
print(resp)
response = client.indices.delete_data_lifecycle(
  name: 'my-data-stream'
)
puts response
const response = await client.indices.deleteDataLifecycle({
  name: "my-data-stream",
});
console.log(response);
DELETE _data_stream/my-data-stream/_lifecycle

然后,您可以再次使用 explain API 来查看索引不再被管理。

resp = client.indices.explain_data_lifecycle(
    index=".ds-my-data-stream-*",
)
print(resp)
response = client.indices.explain_data_lifecycle(
  index: '.ds-my-data-stream-*'
)
puts response
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-000002": {
      "index": ".ds-my-data-stream-2023.04.19-000002",  
      "managed_by_lifecycle": false                           
    },
    ".ds-my-data-stream-2023.04.17-000001": {
      "index": ".ds-my-data-stream-2023.04.19-000001",  
      "managed_by_lifecycle": false                           
    }
  }
}

后备索引的名称。

指示该索引不受数据流生命周期管理。

另一个后备索引的名称。

指示该索引不受数据流生命周期管理。