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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《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;
相关文章
|
4月前
|
消息中间件 缓存 NoSQL
如何解决缓存雪崩?
缓存雪崩是指大量缓存同时失效,导致请求直接冲击数据库,可能引发系统崩溃。其核心解决思路是**避免缓存集中失效或服务不可用**,并通过多层防护机制降低数据库压力。主要措施包括:为缓存key设置**随机过期时间**、按业务分组设置不同过期策略、对热点数据设置**永不过期**;通过**缓存集群部署**提升服务可用性;在数据库层进行**限流、读写分离和扩容**;并结合**本地缓存、熔断降级、缓存预热、持久化恢复**等手段,构建多级防护体系,确保系统稳定运行。
167 0
|
TensorFlow 算法框架/工具 异构计算
Windows部署TensorFlow后识别GPU失败,原因是啥?
Windows部署TensorFlow后识别GPU失败,原因是啥?
|
缓存 JavaScript
vue2知识点:组件模板定义
vue2知识点:组件模板定义
129 4
|
人工智能 自然语言处理 PyTorch
基于openi平台免费华为昇腾910B芯片部署qwen2.5 Instruct 14B大模型
基于OpenI平台和华为昇腾910B芯片,本方案详细介绍了如何免费部署Qwen-2.5 Instruct 14B大模型。涵盖准备工作、模型适配、部署步骤及性能优化等内容,适用于NLP任务部署、本地化适配及实时服务化等多种应用场景。
3556 1
|
消息中间件 大数据 Kafka
kafka线上问题:rebalance
小米探讨了Kafka消费组重平衡问题,这是大数据领域的一大挑战,特别是在大规模集群中。重平衡因组成员增减、主题数量变化或分区数变化触发,可能使Kafka短暂不可用,影响TPS。解决办法包括调整超时时间、心跳频率和拉取间隔以减少重平衡频率和影响。了解触发原因和机制,以及实施优化策略,对于提升Kafka集群的稳定性和性能至关重要。
843 0
kafka线上问题:rebalance
|
关系型数据库 MySQL 数据安全/隐私保护
Docker 安装 MySQL5.7 和 MySQL8
Docker 安装 MySQL5.7 和 MySQL8
865 0
|
监控 IDE 物联网
使用ESP32和OV2640进行图传
本文详细介绍了如何使用ESP32和OV2640进行图像传输。通过硬件连接、软件配置和编程实现,我们可以轻松地将摄像头捕捉的图像通过WiFi传输到浏览器中进行查看。这一技术在智能家居、安防监控等领域具有广阔的应用前景。希望这篇文章能为您提供有价值的参考。
2617 2
|
域名解析 JavaScript 网络协议
技术心得记录:如何使用google地图的api(整理)
技术心得记录:如何使用google地图的api(整理)
1314 0
|
机器学习/深度学习 并行计算 PyTorch
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
10288 2
|
存储 供应链 前端开发
基于Vue和SpringBoot的进销存管理系统的设计和实现(一)
基于Vue和SpringBoot的进销存管理系统的设计和实现
610 0