目录

概念概述

ILM触发行为

Rollover

Shrink

Force merge

Freeze

Delete

索引生命周期

阶段概念

阶段执行

索引生命周期行为

Allocate

Delete

Force merge

Freeze

Megrate

Read Only

Rollover

Searchable snapshot

Set priority

Shrink

Unfollow

Wait for snapshot

实践


概念概述

ILM触发行为

ILM有几个触发行为:rollover、shrink、force merge、freeze、delete

Rollover

当索引中文档数量/文档实际存储大小/索引创建时间,这三个条件满足任意一点,索引会发生滚动,滚动的新索引会根据索引别名或一个数据流创建新的索引。

Shrink

将多个主分片合并为一个索引,减少碎片

Force merge

手动触发合并以减少索引的每个分片中的段数,并释放已删除文档所使用的空间。

Freeze

将索引设为只读,并最大程度地减少其内存占用量。

Delete

永久删除索引,包括其所有数据和元数据。

索引生命周期

索引的生命周期:Hot、Warm、Cold、Delete

阶段概念

Hot:索引处于活跃状态,可update可query

Warm:索引处于温暖状态,此时的索引不可update可query

Cold:索引处于冷却状态,此时索引不可update可query,但相较于Warm状态,此时的query很慢。此状态可类比cos

Delete:索引处于删除状态,不再需要该索引,可删除。

阶段执行

ILM会定时扫描索引并对索引的当前阶段所设置的阈值,并进行相应操作。ILM的扫描周期可配置,参数:indices.lifecycle.poll_interval,参数需要根据实际场景进行配置。当系统qps、tps过大或阶段滚动时间阈值过小时,需要适当减小该参数的值。顺便说一下,es支持的单位:

时间单位 含义
d Days
h Hours
m Minutes
s Seconds
ms Milliseconds
micros Microseconds
nanos Nanoseconds
字节大小单位 含义
b Bytes
kb Kilobytes
mb Megabytes
gb Gigabytes
tb Terabytes
pb Petabytes

索引生命周期行为

Allocate

行为作用阶段:warm,cold

修改索引设置用以改变节点索引分片以及副本数

该阶段操作配置:

  • number_of_replicas:分配给索引的副本数
  • include:为具有至少一个制定自定义属性的节点分配索引
  • exclude:为没有制定自定义属性的节点分配索引
  • require:为具有所有制定的自定义属性的节点分配索引

Delete

行为作用阶段:delete

删除索引

该阶段操作配置:

  • delete_searchable_snapshot:删除在冷阶段创建的可搜索快照,缺省true。

Force merge

行为作用阶段:hot,warm

强制将索引合并到指定的最大分片中,该行为使得索引变为只读状态

该阶段操作配置:

  • max_num_segments:将多个段合并到一起,合并所有索引为一个索引
  • index_codec:用于压缩文档存储的编解码器。唯一接受的值是 best_compression,使用DEFLATE会得到更好的压缩率,但存储字段的性能会降低。缺省压缩算法为LZ4。

Freeze

行为作用阶段:cold

冻结索引以最大程度地减少其内存占用量。

Megrate

行为作用阶段:warm,cold

字面意思,数据迁移

该阶段操作配置:

  • enabled:控制ILM自动迁移索引,缺省为true

Read Only

行为作用阶段:hot,warm

使索引变为只读,禁止写入

需要注意的是,在hot阶段有几个状态,只有索引为rollover状态时,才可以使用readonly行为,否则ILM会拒绝该策略

该阶段操作无配置项

Rollover

行为作用阶段:hot

已存在的索引达到滚动阈值后将滚动到一个新的目标索引

  • 索引名称需要满足正则:^.*-\d+$ 可通过该正则校验索引名称规范
  • 必须配置索引别用用以滚动:index.lifecycle.rollover_alias
  • 索引别名必须配置为可写入
PUT my-index-000001
{"settings": {"index.lifecycle.name": "my_policy","index.lifecycle.rollover_alias": "my_data"},"aliases": {"my_data": {"is_write_index": true}}
}

该阶段操作配置:

  • max_age:索引在该阶段最大存活时间,当达到最大时间后会触发索引滚动,创建索引时开始计时,并于滚动后修改阶段状态并重新计时。
  • max_docs:索引在该阶段最大写入文档数,当达到阈值后会触发索引滚动。
  • max_size:索引在该阶段最大文档容量,该持久化字节大小为主分片大小,不包括副本

Searchable snapshot

行为作用阶段:hot,cold

为配置的存储库中的托管索引创建快照,并将其挂载为可搜索快照。如果托管索引是数据流,则索引将替换数据流中的原始索引。

需要注意的是,在hot阶段的几个状态中,必须为rollover状态方可配置搜索快照,否则ILM将拒绝该策略

该阶段操作配置:

  • snapshot_repository:存储快照空间
  • force_merge_index:强制合并托管索引到一个段中,缺省配置为true。

Set priority

行为作用阶段:hot,warm,cold

设置进入hot,warm或者cold阶段的索引的优先级。节点重启后,优先级高的索引优先恢复

该阶段操作配置:

  • priority:索引优先级。必须是0或者更大的数字(建议:0-200)。设置为null删除优先级。

Shrink

行为作用阶段:hot,warm

设置一个索引为只读且收缩该索引至一个新的更少主分片的索引中。新的索引名称模版为:shrink-<original-index-name>,即就是在原索引前加shrink-前缀命名。

同样,在作用hot阶段时,只有rollover状态方可生效,否则ILM将拒绝该策略

该阶段操作配置:

  • number_of_shards:收缩后的分片数。必须为数字类型

Unfollow

行为作用阶段:hot,warm,cold

取消关注的索引会执行如下操作:

  • 暂停跟随者索引
  • 关闭关注着索引
  • 取消关注领导者索引
  • 打开跟随者索引

Wait for snapshot

行为作用阶段:delete

在移除索引之前等待SLM策略被执行。这个行为确保了已删除的索引快照可用。

该阶段操作配置:

  • policy:删除行为应该所要等待SLM策略的名称。

实践

用DBbrain公共平台做例,根据实际项目阐述ilm的使用配置,并给出一个完整的模版,cp即用

curl --location --request PUT 'localhost:9200/_ilm/policy/custom-policy?pretty' \
--header 'Content-Type: application/json' \
--data-raw '{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "40GB","max_age": "1d","max_docs": 20000000},"set_priority": {"priority": 100}}},"warm": {"min_age": "1d","actions": {"forcemerge": {"max_num_segments": 1},"shrink": {"number_of_shards": 1},"allocate": {"number_of_replicas": 2},"set_priority": {"priority": 50}}},"delete": {"min_age": "2d","actions": {"delete": {}}}}}
}'

如上模版是目前实际使用的ILM策略。

绑定ILM策略生成索引模版

curl --location --request PUT 'http://localhost:9200/_index_template/metric_template_for_custom' \
--header 'Content-Type: application/json' \
--data-raw '{"index_patterns": ["metric*"],"data_stream": {},"template": {"settings": {"index": {"number_of_shards": 1,"number_of_replicas": 1,"lifecycle.name": "custom-policy","lifecycle.rollover_alias": "metric"}},"mappings": {"_source": {"enabled": true},"properties": {"instance_id": {"ignore_above": 1024,"type": "keyword"},"feature": {"properties": {"mem": {"type": "float"}}}}}}
}'

ILM(Index Lifecycle Management)相关推荐

  1. Elasticsearch Index Lifecycle Management (ILM)

    0 - 前言 Elastic Stack 6.6版本的发布,带来了很多新功能,比如: Index Lifecycle Management Frozen Index Geoshape based on ...

  2. 数据生命周期管理(Lifecycle Management)

    概述: oracle的生命周期管理叫做Information Lifecycle Management(ILM) SQL server的生命周期管理叫做Database Lifecycle Manag ...

  3. Oracle ILM相关(Information lifecycle management)

    一. 信息生命周期管理简介 1. 概念 ILM(Information lifecycle management)这个概念诞生于上世纪60-70年代,由StorageTek(2010年被Oracle收 ...

  4. [elasticsearch笔记]Managing the index lifecycle

    索引生命周期 note demo note 索引的生命周期 hot warm cold delete 如果 index.lifecycyle.indexing_complete=true, 索引不会通 ...

  5. 【elasticsearch】elasticsearch 7 index.lifecycle.rollover_alias does not point to index

    文章目录 1.场景1 2.场景再现2 3.源码解析 1.场景1 一环境出现这种问题. illegal_argument_exception: index.lifecycle.rollover_alia ...

  6. 【Kibana】索引生命周期策略错误illegal_argument_exception: index.lifecycle.rollover_alias does not point to index

    一.背景 在使用ELK进行日志收集分析时,我们经常会将每天的日志生成一个索引,类似somta-log-2021-02-25,在以前的版本是需要我们写脚本或者服务来删除不想要的索引的,但是在新的ES里面 ...

  7. PLM,是一个英文缩写,有2个含义,一是表示产品生命周期管理(product lifecycle management,PLM),...

    (product lifecycle management)产品生命周期管理 根据业界权威的CIMDATA的定义,PLM是一种应用于在单一地点的企业内部.分散在多个地点的企业内部,以及在产品研发领域具 ...

  8. ALM(application lifecycle management)介绍

    ALM概念 ALM(application lifecycle management)应用程序生命周期管理 是指软件开发从需求分析开始,历经项目规划.项目实施.配置管理.测试管理等阶段,直至最终被交付 ...

  9. ALM(application lifecycle management)应用程序生命周期管理

    ALM(application lifecycle management)应用程序生命周期管理 似乎挺有用. ============================================= ...

最新文章

  1. SparkStreaming和Storm的区别
  2. DX使用随记--GroupControl
  3. 在python中使用grpc和protobuf
  4. c# bool?和bool_C#中的bool关键字
  5. mysql sql优化入门_Mysql入门SQL 语句优化方法30例
  6. 最小二乘法拟合直线 c++程序
  7. 日期选择窗口_Excel攻略|添加日期、智能填充、多窗口同步、两列(行)交换
  8. 使用Dockerfile为SpringBoot应用构建Docker镜像
  9. 如何解决 Word 打印时内容缺失的问题?
  10. 去哪儿庄辰超:不信命运信概率
  11. 图文并茂:超可爱的12星座猫
  12. Vmware14安装ubuntu18
  13. Scratch简单10以内加法游戏
  14. CRM的客户数据模型:Siebel Party Data Model (VI)
  15. 用函数求lnx,lgx等
  16. SEAndroid中sepolicy/adbd.te策略文件分析
  17. 重磅发布!阿里云混合云:全栈建云、智能管云、极致用云 | 凌云时刻
  18. 支付宝小程序唤起独立签约
  19. 使用UUP DUMP下载多版本Windows镜像
  20. GitHub 上最酷的 8 个简历模板

热门文章

  1. Linux 不间断后台执行进程
  2. 刚装修的房子多久能住?集成墙面真的好吗?
  3. android 8.1 9.0 10.0 Launcher3禁止拖拽app图标到第一屏
  4. git项目拉下来之后无法找到主加载类
  5. 计算机二级和公共英语三级考试时间,英语三级考试时间,全国英语等级考试三级时间。...
  6. PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案
  7. RAC环境备份归档日志和恢复数据库方法
  8. 【BZOJ1135】【POI2009】Lyz
  9. 史上最强的超级爆笑锦集
  10. powermockito测试私有方法_03 增强测试: 静态、私有方法处理