【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。

以下是对 Elasticsearch 官方教程《Customize built-in ILM policies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。


Elasticsearch 教程:自定义内置 ILM 策略

1.背景与目标

Elasticsearch 提供了内置的索引生命周期管理(ILM)策略,例如`logs@lifecycle`、`metrics@lifecycle`和`synthetics@lifecycle`。这些策略主要用于管理 Elastic Agent 收集的数据流(data streams)的后端索引。然而,这些默认策略可能无法完全满足您的性能、弹性和数据保留需求。因此,Elasticsearch 允许用户根据自己的需求自定义这些策略。

本教程的目标是帮助您根据以下需求自定义 ILM 策略:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 滚动后,将索引保留在热数据层 30 天。

• 滚动 30 天后,将索引移动到温数据层,设置副本分片数为 1,并强制合并索引段以释放已删除文档占用的空间。

• 滚动 90 天后删除索引。

2.前提条件

在开始自定义 ILM 策略之前,您需要准备以下环境:

2.1 Elasticsearch 集群

• 热数据层(Hot Tier):用于存储最近的数据,提供高性能的读写操作。

• 温数据层(Warm Tier):用于存储较旧的数据,适合读取操作,但写入性能较低。

如果使用Elasticsearch 服务:

• 默认情况下,Elastic Stack 部署包含热层。

• 要添加温层,可以通过编辑部署并点击"添加温数据层的容量"来完成。

如果使用自管集群:

• 需要为节点分配`data_hot`和`data_warm`角色。

• 例如,在温层的每个节点的`elasticsearch.yml`文件中添加以下配置:

```yaml

node.roles: data_warm

```

2.2 Elastic Agent

• 需要一个安装并配置好的 Elastic Agent,用于将日志数据发送到 Elasticsearch 集群。

• Elastic Agent 使用数据流(data streams)存储日志监控数据,索引模式为`logs-*-*`。

3.自定义 ILM 策略

3.1 查看默认的 ILM 策略

默认的`logs@lifecycle`策略会自动管理`logs-*-*`数据流的后端索引。该策略的默认行为如下:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 该策略旨在防止创建许多微小的每日索引。

3.2 创建新的 ILM 策略

由于直接编辑管理的策略可能会被回滚或覆盖,因此建议将默认策略另存为新策略,并对其进行自定义。

  1. 打开 Kibana:

• 转到堆栈管理(Stack Management)>索引生命周期策略(Index Lifecycle Policies)。

• 切换"包含管理的系统策略(Include managed system policies)"以显示默认的`logs@lifecycle`策略。

  1. 另存为新策略:

• 选择`logs@lifecycle`策略。

• 在"编辑策略日志(Edit policy logs)"页面上,切换"另存为新策略(Save as new policy)",并为新策略命名,例如`logs-custom`。

3.3 自定义策略的阶段和设置

ILM 策略包含多个阶段(Phase),每个阶段都有特定的行为和设置。我们将根据需求自定义以下阶段:

3.3.1 热阶段(Hot Phase)

• 滚动设置(Rollover Settings):

• 默认情况下,`logs@lifecycle`策略会在索引的主分片大小达到 50GB 或索引满 30 天时滚动到新索引。

• 如果需要修改滚动条件,可以点击"高级设置(Advanced settings)",并禁用"使用推荐默认值(Use recommended defaults)"。

• 例如,可以将滚动条件设置为"索引大小达到 40GB 或索引满 20 天"。

3.3.2 温阶段(Warm Phase)

• 激活温阶段:

• 默认情况下,`logs@lifecycle`策略可能没有启用温阶段。您需要手动启用并配置它。

• 点击"高级设置(Advanced settings)"。

• 设置"将数据移入阶段的时间(Move data into phase when)"为"30 天旧",表示在滚动 30 天后将索引移至温层。

• 启用"设置副本(Set replicas)",并将"副本数量(Number of replicas)"设置为 1。

• 启用"强制合并数据(Force merge data)",并将"段数(Number of segments)"设置为 1。这有助于释放已删除文档占用的空间。

3.3.3 删除阶段(Delete Phase)

• 启用删除阶段:

• 在温阶段,点击垃圾桶图标以启用删除阶段。

• 在删除阶段,设置"将数据移入阶段的时间(Move data into phase when)"为"90 天旧",表示在滚动 90 天后删除索引。

  1. 保存新策略:

• 完成所有配置后,点击"保存为新策略(Save as new policy)"。

4.应用新的 ILM 策略

创建并配置好新的 ILM 策略后,需要将其应用于`logs`索引模板,以便 Elastic Agent 使用该策略管理日志数据。

  1. 创建组件模板(Component Template):

• 转到 Kibana 的组件模板(Component Templates)页面。

• 点击"创建组件模板(Create component template)"。

• 命名组件模板为`logs@custom`。

• 在"索引设置(Index settings)"中,指定新创建的 ILM 策略名称:

```json

{

"index": {

"lifecycle": {

"name": "logs-custom"

}

}

}

```

• 审核并保存组件模板。

  1. 更新索引模板(Index Template):

• 转到索引模板(Index Templates)页面。

• 选择`logs`索引模板。

• 查看"组件模板(Component templates)"列表,确认`logs@custom`组件模板已被添加。

5.总结

通过以上步骤,您可以根据自己的需求自定义 Elasticsearch 的内置 ILM 策略。自定义策略允许您灵活地管理索引的生命周期,包括滚动、数据层迁移、副本设置以及索引的最终删除。这有助于优化集群的性能、资源利用率和数据保留策略。

6.注意事项

• 不要直接编辑管理的策略:直接修改默认的管理策略可能会导致策略被回滚或覆盖。建议始终通过"另存为新策略"的方式来创建自定义策略。

• 测试新策略:在生产环境中应用新策略之前,建议在测试环境中验证其行为,确保它符合您的预期。

• 监控与调整:ILM 策略的设置可能需要根据实际使用情况进行调整。建议定期监控集群的性能和资源使用情况,并根据需要优化策略。

通过本教程,您应该能够根据自己的需求自定义 Elasticsearch 的 ILM 策略,并将其应用于实际的数据管理场景中。

相关推荐
Elasticsearch42 分钟前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
elasticsearch
Hrain-AI10 小时前
AI 爬虫三档授权工程落地:搜索放行、训练拦截、Agent 分层(附脚本)
人工智能·elasticsearch·milvus
智搜广告11 小时前
智搜广告:科技行业AI回答优化公司如何破局
大数据·python·elasticsearch·geo
jonyleek18 小时前
企业文档私有化实践:基于JVS数字底座的可控协同架构设计与落地要点
elasticsearch·私有化部署·springcloud·微服务架构·信创适配·jvs·企业文档
深海鱼肝油ya1 天前
向量数据库Elasticsearch(二)介绍&安装&常用操作
人工智能·elasticsearch·kibana·向量数据库·文档操作·索引操作·域的属性
汽车网络安全爱好者1 天前
AI应用(四)之 AI 编程全流程
大数据·人工智能·elasticsearch
Elasticsearch2 天前
jina-ocr-v1:一个支持布局、表格、数学公式和 100 多种语言的 OCR 模型
elasticsearch
先吃饱再说2 天前
为什么 MySQL 的 LIKE 查询这么慢?Elasticsearch 倒排索引完全解析
elasticsearch·agent
Elastic 中国社区官方博客3 天前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
Elasticsearch3 天前
一个按钮,三个位置:我们如何通过更严格的 API 重构 Kibana 的页面页眉
elasticsearch