Elasticsearch索引生命周期管理方案
点击上方蓝色“方志朋”,选择“设为星标”
回复“666”获取独家整理的学习资料!
一、前言
在 Elasticsearch
的日常中,有很多如存储 「系统日志」、「行为数据」等方面的应用场景,这些场景的特点是数据量非常大,并且随着时间的增长 索引
的数量也会持续增长,然而这些场景基本上只有最近一段时间的数据有使用价值或者会被经常使用(热数据),而历史数据几乎没有作用或者很少会被使用(冷数据),这个时候就需要对 索引
进行一定策略的维护管理甚至是删除清理,否则随着数据量越来越多除了浪费磁盘与内存空间之外,还会严重影响 Elasticsearch
的性能;
在 Elastic Stack 6.6
版本后推出了新功能 Index Lifecycle Management(索引生命周期管理)
,支持针对索引的全生命周期托管管理,并且在 Kibana
上也提供了一套 UI 界面来配置策略。本文主要介绍 Elasticsearch
索引生命周期管理如何配置和使用。
二、生命周期
2.1. 阶段介绍
索引生命周期分为4个阶段:hot、warm、cold、delete,其中hot主要负责对索引进行rollover操作。
rollover:滚动更新创建的新索引将添加到索引别名,并被指定为写索引。
「PS」:4个阶段中只有hot阶段是必须的
索引根据时间参数min_age进入生命周期阶段,若未设置,默认是0ms。min_age通常是从创建索引的时间开始计算,如果索引被设置为滚动索引,那么min_age是从索引滚动开始计算。注意,在检查min_age参数并进入下一个阶段前,当前阶段的操作必须完成。
2.2. 阶段动作
阶段/action | 优先级设置 | 取消跟随 | 滚动索引 | 分片分配 | 只读 | 强制段合并 | 收缩索引 | 冻结索引 | 删除 |
---|---|---|---|---|---|---|---|---|---|
hot | √ | √ | √ | × | × | × | × | × | × |
warm | √ | √ | × | √ | √ | √ | √ | × | × |
cold | √ | √ | × | √ | × | × | × | √ | × |
delete | × | × | × | × | × | × | × | × | √ |
2.3. 例子
下面以索引 syslog-2020.10.01
为例子,在索引创建 1 天后转为 Warm 阶段,30 天后转为 Cold 阶段,30 天后删除
日期 | 动作 | 阶段 |
---|---|---|
2020-10-01 |
创建索引 syslog-2020.10.01 ,处理读写请求
|
hot阶段 |
2020-10-02 |
syslog-2020.10.01 改为只读
|
warm阶段 |
2020-11-01 |
syslog-2020.10.01 为只读,并迁移到冷节点储存
|
cold阶段 |
2020-12-01 |
删除索引 syslog-2020.10.01
|
delete阶段 |
三、模拟过程
3.1. 创建索引生命周期策略
假设 Policy
设定如下:
索引以每10个文档做一次
Rollover
Rollover
后 5 秒转为Warm
阶段Rollover
后 20 秒转为Cold
阶段Rollover
后 40 秒删除
curl -XPUT "http://$IP:9200/_ilm/policy/my_ilm_policy" \-H 'Content-Type: application/json' \-u elastic:changeme \-d '{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_docs": "10"}}},"warm": {"min_age": "5s","actions": {"allocate": {"include": {"box_type": "warm"}}}},"cold": {"min_age": "20s","actions": {"allocate": {"include": {"box_type": "cold"}}}},"delete": {"min_age": "40s","actions": {"delete": {}}}}}}'
ip、用户名和密码按实际情况修改
3.2. 关联策略
关联策略有两种方式,分别是使用索引模板关联和索引直接关联
3.2.1. 索引模板关联
索引模板来创建所需的索引,并关联ilm策略
curl -XPUT "http://$IP:9200/_template/my_test_template" \-H 'Content-Type: application/json' \-u elastic:changeme \-d '{"index_patterns": ["my-test-*"], "settings": {"number_of_shards": 1,"number_of_replicas": 0,"index.lifecycle.name": "my_ilm_policy", "index.lifecycle.rollover_alias": "my-test","index.routing.allocation.include.box_type": "hot"}}'
ip、用户名和密码按实际情况修改
index.lifecycle.name:指明该索引应用的 ILM Policy index.lifecycle.rollover_alias:指明在 Rollover 的时候使用的 alias index.routing.allocation.include.box_type:指明新建的索引都分配在 hot 节点上
3.2.2. 索引直接关联
为现有的索引单独关联策略
curl -XPUT "http://$IP:9200/my-test-*/_settings" \-H 'Content-Type: application/json' \-u elastic:changeme \-d '{"index": {"lifecycle": {"name": "my_ilm_policy"}}}'
ip、用户名和密码按实际情况修改
3.3. 查看索引所处阶段
http://$IP:9200/my-test-*/_ilm/explain
3.4. 更新策略
如果没有index应用这份策略,那么我们可以直接更新该策略。
如果有index应用了这份策略,那么当前正在执行的阶段不会同步修改,当当前阶段结束后,会进入新版本策略的下个阶段。
如果更换了策略,当前正在执行的阶段不会变化,在结束当前阶段后,将会由新的策略管理下一个生命周期。
3.5. kibana图形化操作
上述的步骤,大部分都可以在 Kibana
中以图形化界面的方式进行操作
「注意」:如果使用图形化界面来创建策略,删除阶段会缺失
actions
内容而导致无法删除
四、修改轮询间隔(可选)
ILM Service 会在后台轮询执行 Policy,默认间隔时间为 10 分钟,为了测试更快地看到效果,可将其修改为1秒。
curl -XPUT "http://$IP:9200/_cluster/settings" \-H 'Content-Type: application/json' \-u elastic:changeme \-d '{"persistent": {"indices.lifecycle.poll_interval":"1s"}}'
ip、用户名和密码按实际情况修改
五、启动和停止索引生命周期管理
ILM 默认开启
由ILM管理的所有索引将继续执行其策略。有时可能不需要某些索引,甚至集群中的所有索引都不需要。例如,当需要集群拓扑更改时,可能会有计划的维护窗口,这可能会影响正在运行的ILM操作。因此,ILM有两种禁用操作的方法。
停止ILM时,快照生命周期管理操作也会停止,这意味着不会创建计划的快照(当前正在进行的快照不受影响)。
通常,ILM将默认运行。要查看ILM的当前运行状态,请使用Get Status API 来查看ILM的当前状态。
GET _ilm/status
如果请求没有遇到错误,您将收到以下结果:
{"operation_mode": "RUNNING"
}
「ILM的操作模式」:
阶段/action | 优先级设置 |
---|---|
正在运行 | 正常运行,所有策略均正常执行 |
停止 | ILM已收到停止请求,但仍在处理某些策略 |
已停止 | 这表示没有执行任何策略的状态 |
5.1. 停止ILM
可以暂停ILM服务,以便使用Stop API不再执行其他步骤。
POST _ilm/stop
停止后,所有其他政策措施都将停止。这将反映在状态API中
{"operation_mode": "STOPPING"
}
然后,ILM服务将异步地将所有策略运行到可以安全停止的位置。在ILM确认它是安全的之后,它将移至该STOPPED
模式
{"operation_mode": "STOPPED"
}
5.2. 启动ILM
要启动ILM并继续执行策略,请使用Start API。
POST _ilm/start
Start API将向ILM服务发送请求,以立即开始正常操作。
{"operation_mode": "RUNNING"
}
热门内容:
徒手撸了一个API网关,理解更透彻了,代码已上传github,自取~
写了个牛逼的日志切面,甩锅更方便了!
绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
一个注解搞定 SpringBoot 接口防刷,还有谁不会?
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
Elasticsearch索引生命周期管理方案相关推荐
- Elasticsearch 索引生命周期管理方案
Elasticsearch索引生命周期管理方案 文章目录 Elasticsearch索引生命周期管理方案 1.生命周期 1.1 阶段介绍 2.模拟过程(基础) 2.1 创建索引生命周期策略 2.2 创 ...
- 干货 | Elasticsearch 索引生命周期管理 ILM 实战指南
1.什么是索引生命周期? 关于人生,有人这么说:"人,生来一个人,死去一个人,所以,人生就是一个人生老病死的简称." 在基于日志.指标.实时时间序列的大型系统中,集群的索引也具备类 ...
- 【Elasticsearch】Elasticsearch 索引生命周期管理
文章目录 1.概述 1.1 为什么要对elasticsearch进行生命周期管理? 1.2 什么是索引周期管理 1.3 各个阶段允许的action 1.3 如何对elasticsearch进行生命周期 ...
- ElasticSearch索引生命周期管理(ILM)
注: 部分概念介绍来源于网络 6.6 版本的发布,Index Lifecycle Management(索引生命周期管理,后文简称 ILM ): ILM 可以将索引生命周期分为四个阶段(Phase)( ...
- 【Elasticsearch】使用索引生命周期管理实现热温冷架构
1.概述 [Elasticsearch]Elasticsearch 索引生命周期管理 转载:使用索引生命周期管理实现热温冷架构 索引生命周期管理 (ILM) 是在 Elasticsearch 6.6( ...
- Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
之前的博文和视频都讲过 ILM 索引生命周期管理.但从近期的反馈和我自己的实战经验看,依然会有很多坑. 现将我自己和大家遇到的常见坑汇集如下,希望能让后来小伙伴少走弯路. 少啰嗦,直接上干货. 坑1: ...
- Elasticsearch7.X ILM索引生命周期管理(冷热分离)
一."索引生命周期管理"概述 Elasticsearch索引生命周期管理指:Elasticsearch从设置.创建.打开.关闭.删除的全生命周期过程的管理. 二.为什么要使用&qu ...
- Elasticsearch 快照生命周期管理 (SLM) 实战指南
1.Elasticsearch 保证高可用性的方式 Elasticsearch 保证集群高可用的方式包含但不限于如下三种: 方式一:副本分片.主分片失效后,副本分片会被提升为主分片. 方式二:跨集群复 ...
- ES索引生命周期管理ILM
前言 在使用ES的过程中,你是否遇到过这样的问题: 1.单个索引数据量持续增长,导致查询速度降低,运维困难 2.希望能根据时间周期自动生成新的索引,比如天.周.月自动生成新的索引 3.希望能定期自动删 ...
最新文章
- 博士申请 | ​香港中文大学LaVi实验室招收2022年秋季入学博士生、硕士生
- mac idea用自带的maven还是_免费版的 IDEA 为啥不能使用 Tomcat ?
- hadoop SecondNamenode 详解
- Yii2的深入学习--yii\base\Object 类
- [Java]图片压缩
- Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题
- 【招聘(深圳)】迈瑞招.NET 开发Leader和PM
- 如何快速学Web前端开发?JavaScript函数好学吗?
- Easy Recovery帮你解决数据丢失的苦恼
- UltraEdit 注册机使用激活方法
- 智能家居系统--KNX现场实施图片01
- PAT 乙级 1001 害死人不偿命的(3n+1)猜想 (15 分) C++
- 面试官问你为什么离开上一家公司该怎么回答? 1
- 使用C++实现FC红白机模拟器 Cartridge 与 Mapper(实现篇)
- html5+css3界面设计,仿微信支付设计数字键盘
- 卿学姐与诡异村庄(并查集)
- 《OKR工作法》介绍
- [cocos2dx开发技巧4]工具CocosBuilder的使用--复杂动画
- 如何使用 C# 隐藏 Console 窗口?
- 电商系列(一)课程介绍
热门文章
- 信息级联/信息瀑布(Information Cascade)
- 2018-3-28 智能算法-Swarm Intelligence
- PX4多机ros仿真报错
- 面向对象与软件工程---团队作业1
- [网络流24题] 最长k可重区间集
- javascript:为string类添加三个成员,实现去左,右,及所有空格
- 刻意练习:LeetCode实战 -- Task04. 三数之和
- 刻意练习:Python基础 -- Task08. 异常处理
- 如何利用Gephi可视化浏览的网站关系
- 【怎样写代码】实现对象的复用 -- 享元模式(四):享元模式与字符串