设置数据流的生命周期

编辑

为目标数据流配置生命周期

先决条件

编辑

如果启用了 Elasticsearch 安全功能,您必须拥有 manage_data_stream_lifecycle 索引权限或更高权限才能使用此 API。有关更多信息,请参阅安全权限

请求

编辑

PUT _data_stream/<data-stream>/_lifecycle

描述

编辑

为目标数据流配置数据流生命周期。如果提供了多个数据流,但至少其中一个不存在,则所有数据流的生命周期更新将失败,并且 API 将响应 404

路径参数

编辑
<data-stream>
(必需,字符串)用于限制请求的以逗号分隔的数据流列表。支持通配符(*)。要定位所有数据流,请使用 *_all

查询参数

编辑
expand_wildcards

(可选,字符串)通配符模式可以匹配的数据流类型。支持以逗号分隔的值,例如 open,hidden。有效值为

allhidden
匹配任何数据流,包括隐藏的数据流。
openclosed
匹配任何非隐藏的数据流。数据流不能关闭。
none
不接受通配符模式。

默认为 open

请求体

编辑
lifecycle

(必需,对象)

lifecycle 的属性
data_retention
(可选,字符串)如果定义,则添加到此数据流的每个文档将至少存储此时间段。在此时间之后,可以删除该文档。如果为空,则此数据流中的每个文档将无限期存储。
enabled
(可选,布尔值)如果定义,则为此数据流打开/关闭数据流生命周期(true/false)。禁用的数据流生命周期(enabled: false)对数据流没有任何影响。默认为 true
downsampling
(可选,数组)降采样配置对象的可选数组,每个对象定义一个 after 间隔,表示何时应该对后备索引进行降采样(时间范围自索引滚动后计算,即生成时间)和一个 fixed_interval 表示降采样间隔(最小 fixed_interval 值为 5m)。最多可以配置 10 轮降采样。请参阅下面的配置示例

示例

编辑

以下示例设置 my-data-stream 的生命周期

resp = client.indices.put_data_lifecycle(
    name="my-data-stream",
    data_retention="7d",
)
print(resp)
response = client.indices.put_data_lifecycle(
  name: 'my-data-stream',
  body: {
    data_retention: '7d'
  }
)
puts response
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
}

示例

编辑

以下示例配置两轮降采样,第一轮从后备索引滚动后一天开始(或者如果索引仍在接受写入的时间范围内,则稍后开始),间隔为 10m,第二轮从滚动后 7 天开始,间隔为 1d

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