赞
踩
在使用ES的过程中,你是否遇到过这样的问题:
1、单个索引数据量持续增长,导致查询速度降低,运维困难
2、希望能根据时间周期自动生成新的索引,比如天、周、月自动生成新的索引
3、希望能定期自动删除过期的历史数据,比如3年前的订单信息。
4、自动控制数据的冷热数据分层存储。
其实ES早就提供了相关的处理机制,那就是索引生命周期管理ILM(index lifecycle management )。
通过配置索引生命周期管理 (ILM)
策略实现根据性能、弹性和保留要求自动管理索引。
当索引达到特定大小或文档数量时启动新索引
每天、每周或每月创建一个新索引并存档以前的索引
删除陈旧索引以执行数据保留标准
我们可以通过 Kibana Management 或 ILM API 创建和管理索引生命周期策略。
当您为 Beats 或 Logstash Elasticsearch 输出插件启用索引生命周期管理时,会自动配置默认策略。
索引生命周期策略可以触发如下操作:
Rollover
: 当索引达到特定大小、文档数量或年龄时,创建一个新的写入索引Shrink
: 减少索引中主分片的数量Force merge
: 触发强制合并以减少索引分片中的segments段数Freeze
: 冻结索引并使其只读Delete
: 永久删除索引,包括其所有数据和元数据。ILM 可以更轻松地管理热-温-冷架构中的索引,这在您处理日志和指标等时间序列数据时很常见。
可以指定:
例如,如果您将 ATM 机群中的指标数据索引到 Elasticsearch 中,您可以定义一个策略,说明:
1、当索引的主分片总大小达到 50GB 时,滚动到新索引。
2、将旧索引移至热阶段,将其标记为只读,并将其缩小为单个分片。
3、7 天后,将索引移至冷阶段并将其移至较便宜的硬件。
4、达到所需的 30 天保留期后,删除索引。
简单来说,索引生命周期管理ILM通过自定义索引生命周期策略(Index lifecycle policies),可以实现自动控制索引的滚动,分片压缩,强制合并,冻结,删除等操作。
注意⚠️:
要使用 ILM,集群中的所有节点必须运行相同的版本。
ILM将索引生命周期定义为5个阶段:
索引的生命周期策略(Index lifecycle policies)指定适用于哪些阶段,在每个阶段执行哪些操作,以及在阶段之间转换的时间。
ILM 根据索引的年龄在生命周期中移动索引。为了控制这些转换的时间,可以为每个阶段设置最小年龄。要使索引进入下一阶段,当前阶段的所有操作都必须完成,并且索引的年龄必须大于下一阶段的最小年龄。规定的最低年龄必须在以后各阶段之间增加,例如,最低年龄为10天的”暖”阶段之后只能是最低年龄未设定或大于10天的”冷”阶段。
索引生命周期阶段的转变主要是根据索引的年龄
。
ILM 控制一个阶段中的动作执行的顺序,以及执行哪些步骤以对每个动作执行必要的索引操作。
当索引进入一个阶段时,ILM 将阶段定义缓存到索引元数据中。这可以确保策略更新不会将索引置于它永远不能退出阶段的状态。如果可以安全地应用更改,ILM 将更新缓存的阶段定义。如果不能,则使用缓存的定义继续阶段执行。
ILM 定期运行,检查索引是否满足策略标准,并执行所需的任何步骤。为了避免竞态条件,ILM 可能需要运行多次以执行完成操作所需的所有步骤。例如,如果 ILM 确定某个索引已经满足滚动条件,它将开始执行完成滚动动作所需的步骤。
ILM 在每个阶段支持以下操作。
Hot阶段
Warm阶段
Cold阶段
Frozen阶段
Delete阶段
本节主要介绍了ES中索引生命周期管理ILM的相关功能和使用场景。
1、索引生命周期管理的概念以及使用场景。
2、索引生命周期的5个阶段,Hot—>Warm—>Cold—>Frozen—>Delete。
3、可以通过定义索引生命周期策略(Index lifecycle policies)来实现索引生命周期的管理。
4、索引在每个生命周期阶段,可以执行的相关动作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。