资讯专栏INFORMATION COLUMN

ES生命周期管理

IT那活儿 / 1339人阅读
ES生命周期管理

点击上方“IT那活儿”,关注后了解更多精彩内容!!!




ES生命周期管理简介


索引生命周期管理功能是elasticsearch 在 6.7.0 引入的。此功能主要是用于管理时间序列数据的索引。
对于时间序列的索引,生命周期有4个阶段:
阶段1. hot: 索引被频繁写入和查询
阶段2. warm: 索引不再写入,但是仍在查询
阶段3. cold: 索引很久不被更新,同时很少被查询。但现在考虑删除数据还为时过早,仍然有需要这些数据的可能,但是可以接受较慢的查询响应。
阶段4. delete: 索引不再需要,可以删除。
一个index将在热的阶段开始,然后是温,冷,最后是删除阶段,生命周期策略控制索引如何在这些阶段中转换以及在每个阶段对索引执行的操作。



生命周期策略


1. 下面是一个创建生命周期的例子,策略不一定需要为索引配置每个阶段:
PUT _ilm/policy/test_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover":{
"max_docs":1
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "30s",
"actions": {
"delete": {}
}
}
}
}
}
2. 时间参数
索引根据时间参数min_age进入生命周期阶段,若未设置,默认是0ms。min_age通常是从创建索引的时间开始计算,如果索引被设置为滚动索引,那么min_age是从索引滚动开始计算。注意,在检查min_age参数并进入下一个阶段前,当前阶段的操作必须完成。
3action

4. 优先级设置
这个action等同于设置索引属性index.priority的值。具有较高优先级的索引将在节点重启后优先恢复。通常,热阶段的指数应具有最高值,而冷阶段的指数应具有最低值。未设置此值的指标的隐含默认优先级为1。索引的优先级。必须为0或更大。也可以设置为null以删除优先级。
5. 使用滚动索引有几个注意事项:
索引命名必须 *-d+$
索引必须设置index.lifecycle.rollover_alias为滚动的别名。索引还必须是别名的写入索引。
6. 更新策略
如果没有index应用这份策略,那么我们可以直接更新该策略。
如果有index应用了这份策略,那么当前正在执行的阶段不会同步修改,当当前阶段结束后,会进入新版本策略的下个阶段。
如果更换了策略,当前正在执行的阶段不会变化,在结束当前阶段后,将会由新的策略管理下一个生命周期。
7. 策略错误处理
  • 当在生命周期策略处理中出现异常时,会进入错误阶段,停止策略的执行。


GET /myindex/_ilm/explain


  • 使用上述API可以看到异常的原因,当解决这个问题,并更新策略后,可以通过下面的API进行重试:


POST /myindex/_ilm/retry
8. ilm的启用禁用
  • ilm的状态查看:


GET _ilm/status


  • 开启和关闭:


POST _ilm/start
POST _ilm/stop






实验环境







实验步骤


1. 创建生命周期策略
curl -H Content-Type: application/json -XPUT -u elastic:qwer123 -s http://@192.168.43.139:9200/_ilm/policy/test_policy -d
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover":{
"max_docs":1,
"max_age": "90s"
},
"set_priority": {
"priority": 100
}
}
},
"delete": {
"min_age": "180s",
"actions": {
"delete": {}
}
}
}
}
}
  • 查看生命周期策略:

curl -XGET -u elastic:qwer123 -s
http://@192.168.43.139:9200/_ilm/policy/test_policy?pretty
2. 创建索引模板
curl -H Content-Type: application/json -XPUT -u elastic:qwer123 -s http://@192.168.43.139:9200/_template/datastream_template -d
{
"index_patterns": ["test-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "test_policy",
"index.lifecycle.rollover_alias": "test-alias"
}
}
  • 查看创建的索引模板


curl -XGET -u elastic:qwer123 -s 
http://@192.168.43.139:9200/_template/test_template?pretty

3. 配置生命周期策略检测时间
curl -H Content-Type: application/json -XPUT -u elastic:qwer123 -s http://@192.168.43.139:9200/_cluster/settings -d
{
"transient": {
"indices.lifecycle.poll_interval": "10s"
}
}
默认监测为十分钟,便于测试,改为10s。
4. 创建索引
curl -H Content-Type: application/json -XPUT -u elastic:qwer123 -s http://@192.168.43.139:9200/test-000001 -d
{
"aliases": {
"test-alias": {
"is_write_index": true
}
}
}
5. 向索引中插入一条数据
curl -H Content-Type: application/json -XPOST -u
elastic:qwer123 -s http://@192.168.43.139:9200/test-
alias/_doc -d
{
"message":"hello world"
}
6. 查询索引滚动进度
curl -XGET -u elastic:qwer123 -s 
http://@192.168.43.139:9200/test-*/_ilm/explain?pretty


引自动创建了一个新的"test-0000063",旧的索引”test-000061”,”test-0000062” action变成DELETE。

7. 过180s再次查看索引
curl -XGET -u elastic:qwer123 -s 
http://@192.168.43.139:9200/test-*/_ilm/explain?pretty
旧的索引”test-000061”已被删除,索引"test-000063"到达最大时间继续往后滚动。
在做日志查询时,我们只需要使用别名”test-alias”进行日志查询即可,es便可无感知完成日志存储删除动作。



END



更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129745.html

相关文章

  • 高级前端面试题大汇总(只有试题,没有答案)

    摘要:面试题来源于网络,看一下高级前端的面试题,可以知道自己和高级前端的差距。 面试题来源于网络,看一下高级前端的面试题,可以知道自己和高级前端的差距。有些面试题会重复。 使用过的koa2中间件 koa-body原理 介绍自己写过的中间件 有没有涉及到Cluster 介绍pm2 master挂了的话pm2怎么处理 如何和MySQL进行通信 React声明周期及自己的理解 如何...

    kviccn 评论0 收藏0
  • 2018大厂高级前端面试题汇总

    摘要:面试的公司分别是阿里网易滴滴今日头条有赞挖财沪江饿了么携程喜马拉雅兑吧微医寺库宝宝树海康威视蘑菇街酷家乐百分点和海风教育。 (关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导) 本人于7-8月开始准备面试,过五关斩六将,最终抱得网易归,深深感受到高级前端面试的套路。以下是自己整理的面试题汇总,不敢藏私,统统贡献出来。 面试的公司分...

    zzir 评论0 收藏0
  • React的生命周期到底是怎么一回事?

    摘要:在中,组件基本由三个部分组成属性状态以及生命周期方法。在生命周期中是必须的,是渲染组件用的。返回就是紧接着以下的生命周期函数返回表示组件不需要重新渲染,不再执行任何生命周期函数包括。生命周期流程图原文地址 尽量全面详细的整理一下React的生命周期中的知识点。 组件 组件是独立的封装的可以复用的一个小部件,它是React的核心思想之一。通过划分组件,可以将一个页面划分成独立的多个可复用...

    sutaking 评论0 收藏0
  • 解读React源码(三):生命周期管理艺术

    摘要:前言的主要思想是通过构建可复用组件来构建页面所谓组件其实就是有限状态机通过状态渲染对应的界面且每个组件都有自己的生命周期它规定了组件的状态和方法需要在哪个阶段改变和执行子组件子组件子组件子组件初探生命周期当首次挂载组件时按顺序执行当卸载组件 前言 React的主要思想是通过构建可复用组件来构建页面.所谓组件,其实就是有限状态机(FSM),通过状态渲染对应的界面,且每个组件都有自己的生命...

    lk20150415 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<