带你读《Elastic Stack 实战手册》之48:——3.5.7.索引生命周期管理(1)

简介: 带你读《Elastic Stack 实战手册》之48:——3.5.7.索引生命周期管理(1)

3.5.7.索引生命周期管理


创作人赵凯

审稿人朱永生

 

Elasticsearch 在 6.7 版本正式加入索引生命周期管理,旨在管理 Elasticsearch 中的索引。

通常我们使用 Elasticsearch 的时候,index 命名都是 xxx-YYYY.MM.dd 类似这样的格式,每天创建一个index,这需要我们自己创建 index,或者通过自动创建。

 

l 每天创建一个 index,但是每天的数据量又非常少,这对集群来说是不利的。

l 如果是自动创建的话,集群 index 和 shard 数过多,那么在每天的 00:00 时,大量的

l index同时创建,这时我们就会发现集群的写入速度会变慢,可能会发生 index 写入拒绝的情况。

l 集群需要对冷热数据进行分离,性能好的机器放最近频繁查询的数据,随着时间推移,数据查询不在频繁,需要将数据迁移到性能较差的机器上。

 

以上这些我们可以使用 Elasticsearch 提供的索引生命周期管理功能能很好的解决,接下来我们了解一下 索引生命周期管理。

 

索引生命周期的四个阶段

 

l Hot 

l index 正在查询和更新,一般性能好的机器会设置为 Hot 节点来进行数据的读写。

 

l Warm

l index不再更新,但是仍然需要查询,节点性能一般可以设置为 Warm 节点。


l Cold 

l index不再被更新,且很少被查询,数据仍然可以搜索,但是能接受较慢的查询,节点性能较差,但有大量的磁盘空间。



l Delete

l 数据不需要了,可以删除。

 

节点的类型可以通过一下两种方式设置,推荐第二种,第一种后续可能会弃用。

 

第一种:

# elasticsearch.yml
# node.attr.xxx: xxx
node.attr.data: warm

第二种(推荐):


# elasticsearch.yml 
# data_content, data_hot, data_warm, data_cold
# 配置该节点既属于内容层又属于热层
node.roles: ["data_hot", "data_content"]


这四个阶段按照 Hot,Warm,Cold,Delete 顺序执行,上一个阶段没有执行完成是不会执行下一个阶段的,对于不存在的阶段,会跳过该阶段进入到下一个阶段。

 

生命周期默认每 10 分钟检测一次,可以通过集群的配置动态修改,如下


PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "10m" 
  }
}

生命周期管理 API

 

每个阶段支持的行为会在下一章节进行介绍,此章节仅仅为了介绍 API。

1、创建生命周期管理策略

 

min_age 参数指定从 index 创建后多长时间进入到该阶段。

 

以下示例是指从当 index 创建时间超过 10 天后,进入到 warm 阶段,将 segment 数量

merge 为 1,warm 阶段完成后,进入 delete 阶段,index 创建时间超过 30 天后,将index删除。


PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "min_age": "10d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

2、查看生命周期管理策略

 

# 查看所有的生命周期管理策略
GET _ilm/policy
# 查看特定的生命周期管理策略
# GET _ilm/policy/<policy_id>

3、删除生命周期管理策略


DELETE _ilm/policy/<policy_id>

4、触发生命周期策略中特定步骤的执行

 

l current_step

l phase 当前阶段的名称

l action 当前行为的名称

l name 当前步骤的名称

 

l next_step

l phase 想要执行阶段的名称

l action 想要执行行为的名称

l name 想要执行步骤的名称


POST _ilm/move/my-index-000001
{
  "current_step": { 
    "phase": "new",
    "action": "complete",
    "name": "complete"
  },
  "next_step": { 
    "phase": "warm",
"action": "forcemerge",
 "name": "forcemerge"
  }
}

5、移除生命周期管理策略


# POST <target>/_ilm/remove
POST my-index-000001/_ilm/remove

6、生命周期重试


# POST <index>/_ilm/retry
POST my-index-000001/_ilm/retry

7、查看当前索引生命周期管理状态


GET /_ilm/status

8、查看一个或多个索引的当前生命周期状态

# GET <target>/_ilm/explain
GET my-index-000001/_ilm/explain

9、启动索引生命周期管理插件

POST _ilm/start

10、停止索引生命周期管理插件

POST /_ilm/stop


《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.7.索引生命周期管理(2) https://developer.aliyun.com/article/1228515

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
708 0
|
8月前
|
数据采集 监控 安全
怎样能购买到静态IP?静态IP有什么用处和优点?
本文将详细探讨购买静态IP的多种方式,包括静态IP采集的方法和如何有效购买代理IP。我们将分析不同途径的优缺点,帮助读者选择最适合自己的静态IP解决方案,让网络活动更加稳定和安全。无论是个人用户还是企业需求,均能找到合适的参考。
|
6月前
|
存储 监控 API
百炼知识库扣费看不懂?阿里云百炼计费逻辑:规格费 + Token 费一次讲透
阿里云百炼知识库自2026年1月4日起正式计费,采用“规格费+Token费”双轨模式:规格费按标准版(0.03元/库/小时)或旗舰版(0.2元/RCU/小时)计;Token费按向量/排序模型实际调用量计(如0.0005元/千Token)。支持免费额度、资源包与后付费三级抵扣,含成本优化建议。
|
缓存 资源调度 JavaScript
万字总结webpack实战案例配置
该文章总结了Webpack在实际项目中的配置案例,包括如何配置多页面应用、使用高级插件、优化构建速度及减少输出文件大小等方面的实战经验。
|
应用服务中间件 nginx
记一次nginx转发的问题(POST请求慎用301 Moved Permanently)
您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧
1698 0
|
Python
Python入门(一):字符串的格式化
在编程中我们经常需要对输出的内容进行格式化后再输出,比如经常收到的手机订阅短信内容,“尊敬的***用户,您本月的消费金额是***”,这里的***所代表的内容是动态的根据具体的内容进行输出,就要用到了格式化输出,那么在python中如何进行字符串的格式化输出呢?其实跟其他的编程语言类似,需要用到占位符,就是用具体的占位符来代替上述***的内容,根据上述***的内容的不同,占位符也有所不同,常用的占位符有以下几种:
283 0
Python入门(一):字符串的格式化
|
弹性计算 前端开发 关系型数据库
ECS体验感
本人2022届毕业生,需要做毕设,所以来阿里云购买服务器。这是我第一次购买服务器的经历,体验良好,过程中的各种问题也能够从各大网站上找到答案并解决。通过这次购买服务器并使用它,我也是第一次真实的完成一个前后端相接并有数据支撑的完整的项目。我感到很有成就感,也对计算机领域有了更进一步的新的认知。
|
数据可视化 JavaScript 前端开发
再见,可视化!你好,Pandas!
用Python做数据分析离不开pandas,pnadas更多的承载着处理和变换数据的角色,pands中也内置了可视化的操作,但效果很糙。
再见,可视化!你好,Pandas!
大带宽增长需求 | 带你读《5G承载关键技术与规划设计》之六
带宽是 5G 承载最为基础和关键的技术指标之一。本节分别对单基站承载带宽需求、回传带宽需求,以及前传及中传带宽需求进行分析和评估。
大带宽增长需求   | 带你读《5G承载关键技术与规划设计》之六
|
数据采集 JavaScript 搜索推荐
带你读《重构数字战斗力: 中小企业的数字化转型之路》第一章汽车及汽车零部件生产企业的 “上云、用数、赋智”之路 案例1(二)
《重构数字战斗力: 中小企业的数字化转型之路》第一章汽车及汽车零部件生产企业的 “上云、用数、赋智”之路 案例1
带你读《重构数字战斗力: 中小企业的数字化转型之路》第一章汽车及汽车零部件生产企业的 “上云、用数、赋智”之路 案例1(二)

热门文章

最新文章