使用数据流管理一般内容
数据流是专为时间序列数据设计的。如果您想使用数据流管理常规内容(不带时间戳的数据),可以设置摄取管道,通过在摄取时添加时间戳字段来转换和丰富您的常规内容,从而获得基于时间的管理所带来的优势。
例如,知识库、网站内容、电子商务或产品目录搜索等搜索用例可能需要您频繁索引常规内容(不带时间戳的数据)。因此,您的索引可能会随着时间的推移而显著增长,这可能会影响存储需求、查询性能和集群健康状况。遵循此过程中的步骤(包括添加时间戳字段并迁移到受 ILM 管理的数据流),可以帮助您根据索引的大小或生命周期阶段,以更简单的方式轮转索引。
要将您的常规内容从索引轮转到数据流,您需要
创建摄取管道以处理您的常规内容并添加
@timestamp字段。创建索引模板,该模板使用已创建的摄取管道和生命周期策略。
可选:如果您有现有的非托管索引,并希望将数据迁移到您创建的数据流中,请使用数据流进行重索引。
更新您的摄取端点,以指向所创建的数据流。
可选:您可以使用 ILM explain API 获取托管索引的状态信息。有关更多信息,请参阅检查生命周期进度。
您可以创建一个摄取管道,使用 set 处理器来添加 @timestamp 字段。请在 Kibana 中按照以下步骤操作,或者使用 创建或更新管道 API 进行操作。
要在 Kibana 中添加摄取管道
- 使用导航菜单或全局搜索字段进入 摄取管道 (Ingest Pipelines) 管理页面。
- 选择 创建管道 (Create pipeline) > 新建管道 (New pipeline)。
配置管道的名称、描述,并添加一个 Set 处理器,该处理器添加值为 {{_ingest.timestamp}} 的 @timestamp 字段。
使用 API 添加摄取管道
PUT _ingest/pipeline/ingest_time_1
{
"description": "Add an ingest timestamp",
"processors": [
{
"set": {
"field": "@timestamp",
"value": "{{_ingest.timestamp}}"
}
}]
}
生命周期策略指定了索引生命周期中的各个阶段以及在每个阶段执行的操作。生命周期最多可以包含五个阶段:hot(热)、warm(温)、cold(冷)、frozen(冻结)和 delete(删除)。
例如,您可以定义一个名为 indextods 的策略,配置为当分片大小达到 10 GB 时进行轮转。
您可以在 Kibana 中或使用 创建或更新策略 API 来创建策略。
要在 Kibana 中创建策略
- 使用导航菜单或全局搜索字段转到 Index Lifecycle Policies 管理页面。
- 点击 Create policy。
在 热 (Hot) 阶段,默认情况下,受 ILM 管理的索引会在满足以下任一条件时 进行轮转
- 它达到 30 天的有效期。
- 一个或多个主分片达到 50 GB 大小。
取消勾选 使用推荐默认值 (Use recommended defaults) 以调整这些值,并在主分片达到 10GB 时进行轮转。
使用 API 创建生命周期策略
PUT _ilm/policy/indextods
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"set_priority": {
"priority": 100
},
"rollover": {
"max_primary_shard_size": "10gb"
}
}
}
}
}
}
有关生命周期阶段和可用操作的更多信息,请参阅 创建生命周期策略。
要使用已创建的生命周期策略,您需要配置一个使用该策略的索引模板。创建索引模板时,请指定以下详细信息
- 生命周期策略的名称,在我们的示例中为
indextods - 用于通过添加
@timestamp字段来丰富数据的摄取管道,在我们的示例中为ingest_time_1 - 通过包含
data_stream定义,使模板启用数据流 - 索引模式,这确保了该模板将应用于匹配的索引,在我们的示例中为
movetods
您可以在 Kibana 中创建模板,也可以使用 创建或更新索引模板 API 进行创建。
要在 Kibana 中创建索引模板,请完成以下步骤
使用导航菜单或全局搜索字段转到 Index Management 页面。
在 索引模板 (Index Templates) 选项卡中,选择 创建模板 (Create template)。

在 Logistics 页面上
- 指定模板的名称。例如
index_to_dot。 - 指定一个模式来匹配您想要通过生命周期策略管理的索引。例如,
movetodos。 - 打开 创建数据流 (Create data streams) 开关。
- 将 索引模式 (index mode) 设置为 标准 (Standard)。
- 指定模板的名称。例如
可选:在 组件模板 (Component templates) 页面上,使用搜索和过滤工具选择要包含在索引模板中的任何 组件模板。索引模板将继承组件模板中定义的设置、映射和别名,并在创建索引时应用它们。
在 索引设置 (Index settings) 页面上,指定您想要使用的生命周期策略和摄取管道。例如,
indextods和ingest_time_1{ "lifecycle": { "name": "indextods" }, "default_pipeline": "ingest_time_1" }在 映射 (Mappings) 页面上,自定义文档被索引到 Elasticsearch 时使用的字段和数据类型。例如,选择 加载 JSON (Load JSON) 并包含这些映射
{ "_source": { "excludes": [], "includes": [], "enabled": true }, "_routing": { "required": false }, "dynamic": true, "numeric_detection": false, "date_detection": true, "dynamic_date_formats": [ "strict_date_optional_time", "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z" ] }在 查看 (Review) 页面上,确认您的选择。您可以检查所选的选项,以及将要创建的索引模板的格式和相关的 API 请求。
新创建的索引模板将用于所有名称匹配指定模式的新索引,并且对于其中的每一个索引,都将应用指定的 ILM 策略。
有关在 Kibana 中配置模板的更多信息,请参阅 管理索引模板。
使用 创建索引模板 API 来创建指定了所创建的摄取管道和生命周期策略的索引模板
PUT _index_template/index_to_dot
{
"template": {
"settings": {
"index": {
"lifecycle": {
"name": "indextods"
},
"default_pipeline": "ingest_time_1"
}
},
"mappings": {
"_source": {
"excludes": [],
"includes": [],
"enabled": true
},
"_routing": {
"required": false
},
"dynamic": true,
"numeric_detection": false,
"date_detection": true,
"dynamic_date_formats": [
"strict_date_optional_time",
"yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"
]
}
},
"index_patterns": [
"movetods"
],
"data_stream": {
"hidden": false,
"allow_custom_routing": false
}
}
使用 _data_stream API 创建数据流
PUT /_data_stream/movetods
您可以检查数据流的生命周期状态,包括有关其关联的 ILM 策略的详细信息。
如果您想将文档从现有索引复制到您创建的数据流中,请使用 _reindex API 并结合数据流进行重索引
POST /_reindex
{
"source": {
"index": "indextods"
},
"dest": {
"index": "movetods",
"op_type": "create"
}
}
有关更多信息,请查看 使用数据流进行重索引。
如果您使用 Elastic 客户端、脚本或任何其他第三方工具将数据摄取到 Elasticsearch,请确保更新这些工具以使用所创建的数据流。