当前位置: 首页 > news >正文

ES索引生命周期管理

基于如何 定时删除ES索引过期数据 而引发的一系列关于ES索引生命周期管理ILM(Index Lifecycle Management)的学习

快速上手 :定时删除ES索引中的过期数据

1. ILM解决什么问题?

ES从6.7版本引入ILM,通过ILM可以解决哪些问题呢?

  1. 自动新建索引,当索引大小达到阈值时自动创建新索引
  2. 过期数据清理,索引每天新增的数据过大,需要定时删除旧的索引数据。
  3. 索引数据备份,一些旧的数据不需要再进行修改和查询,但是需要保留一定的时长
  4. 降低资源消耗,一些需要查询但是极低频的数据可以存放在性能差一点的机器上

2. ILM是如何运作的?

通过配置生命周期策略,将其关联到索引上,通过索引别名往索引中写入数据,当索引触发生命周期策略时自动创建新的索引或自动推进索引阶段。

2.1 索引滚动创建

在这里插入图片描述

  1. 数据通过索引别名写入,不直接使用索引名称写入数据
  2. 通过配置索引策略来触发索引滚动生成新的索引,生成新索引后别名自动指向新的索引。
  3. 触发索引rollover有三种方式:索引大小达到阈值,索引存在时间达到设定时间,文档数达到设定值

2.2 索引从生到死

索引生命周期策略针对单个索引,把索引分为几个阶段,Hot、Warm、Cold、Delete,可以通过生命周期策略的配置来决定索引在什么时间或什么条件下进入下一阶段,只有Hot阶段是必须的。
在这里插入图片描述
可以根据不同的使用场景来配置不同的生命周期策略:
如果只需要进行自动创建新的索引(避免单个索引数据量过大,不方便迁移或数据维护),可以只配置Hot策略
如果需要自动删除旧的索引,可以再配置一个Delete策略
如果需要隔离读和写,可以配置一个Warm策略
如果需要备份数据或减低资源消耗,可以配置一个Cold策略

2.3 生命周期策略配置

创建一个索引生命周期策略

PUT _ilm/policy/demo_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "15gb","max_age": "7d","max_docs" : 10000000}}},"delete": {"min_age": "7d","actions": {"delete": {}}}}}
}

以上是一个简单的索引生命周期策略的配置
当索引大小达到15G或者索引创建时长达到7天或者文档数量达到1千万时建立新的索引
创建新的索引后,旧的索引7天后自动删除

3. 索引生命周期策略

在上文中简单说明了ILM原理,也有简单的demo实战,我们进行深入学习。

3.1 索引与生命周期策略之间的一些关系

在这里插入图片描述

  • 在数据写入时通过别名logs写入,别名指向最新的索引
  • 在数据查询时通过pattern logs*进行查询,从多个索引中查询数据,当索引处理Delete阶段时,将查询不到索引中的数据
  • 索引自动创建时命名会以logs开头,自动匹配索引模板log-template
  • 索引模板中设置了索引的生命周期策略demo-policy以及索引滚动时关联的别名

3.2 索引生命周期各阶段的action

在索引不同阶段可以配置不同的action策略,下图是各阶段的关键action
在这里插入图片描述
Action含义
在这里插入图片描述
各阶段可执行的action
在这里插入图片描述

4. 定时删除ES索引中的过期数据

定时删除索引中旧数据,比如删除7天或30天之前的数据

基于ILM来清理旧数据并不是直接处理指定索引,不是针对一个固定的索引去删除指定时间范围之前的数据,而是通过设置ILM策略生成新的索引,再把旧的索引直接删除,可以设置旧索引的保留天数。

类似于日志框架的滚动日志生成,对于旧的日志文件可以进行删除,而不是去清理一个日志文件中旧的日志数据。

demo流程

配置一个索引生命周期策略 -> 将策略关联到索引 -> 触发策略生成新索引 -> 等待策略自动删除旧索引

4.1 API方式实现

4.1.1 创建生命周期策略

PUT _ilm/policy/demo_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "15gb","max_age": "7d","max_docs" : 10000000}}},"delete": {"min_age": "7d","actions": {"delete": {}}}}}
}

其中:

  1. 索引生命周期一共有四个阶段,hot、delete是其中的两个阶段,我们这里验证下过期删除,只要配置hot跟delete就可以了。
  2. rollover表示生成新索引的触发条件,满足其中一条就会触发策略自动生成新的索引
    max_size:1mb 表示索引大小达到1M时触发
    max_age:5m 表示索引建立时长到达5分钟时触发
    max_docs:10 表示文档数量达到10个时触发
  3. delete阶段中min_age:5m 表示旧索引保留5分钟后删除

4.1.2 创建索引模板关联策略

PUT _index_template/test_policy_template
{"index_patterns": ["test_policy*"],"template": {"settings": {"number_of_shards": 1,"number_of_replicas": 0,"index.lifecycle.name": "demo_policy","index.lifecycle.rollover_alias": "policy_index_alias"}}
}

其中:

  1. index_patterns表示test_policy开头的所有索引都会自动使用该模板,通过设置索引模板,创建相应的索引时会自动带上模板中的一些索引设置,比如给索引设置生命周期策略,设置rollover别名等等
  2. 单机部署时 number_of_replicas需要设置为0,否则索引健康状态为yellow,不会自动推进索引的阶段
  3. index.lifecycle.name 是上述创建的生命周期策略的名称
  4. index.lifecycle.rollover_alias 是索引生命周期关联的索引别名,往索引中写入数据时需要通过别名写入,当触发生命生成新的索引时,该索引别名会指向新的索引,通过别名写入时数据就会写入到新的索引中

4.1.3 创建索引并验证

创建索引

PUT /test_policy-1
{"aliases": {"policy_index_alias": {"is_write_index": true}}
}
  1. 创建索引需要以数字结尾
  2. 创建索引时需要指定索引别名,与rollover_alias别名相同
  3. 以test_policy开头命名,会自动匹配到test_policy_template索引模板,基于该索引模板创建索引

触发索引生命周期策略

配置的三种方式均可触发,我们选其中的文档数触发
通过别名往索引中写入11条数据,执行下述测试数据11次

POST policy_index_alias/_doc
{"message": "logged the request","@timestamp": "1633677855467"
}

验证

  1. 查询是否创建新的索引,是否自动删除索引
GET /_cat/indices/test_policy*
  1. 修改生命周期策略检查间隔
    ES默认每10分钟检查一次索引是否满足策略,如果满足将支持对应的action, 我们修改时间间隔为20s
PUT _cluster/settings
{"transient": {"indices.lifecycle.poll_interval": "20s" }
}
  1. 查询索引生命周期状态
    step: check-rollover-ready 此时还未触发索引rollover
GET /test_policy-1/_ilm/explain{"indices" : {"test_policy-1" : {"index" : "test_policy-1","managed" : true,"policy" : "demo_policy","lifecycle_date_millis" : 1727787555665,"age" : "58.08s","phase" : "hot","phase_time_millis" : 1727787578241,"action" : "rollover","action_time_millis" : 1727787578241,"step" : "check-rollover-ready","step_time_millis" : 1727787578241,"phase_execution" : {"policy" : "demo_policy","phase_definition" : {"min_age" : "0ms","actions" : {"rollover" : {"max_size" : "1mb","max_age" : "5m","max_docs" : 10}}},"version" : 1,"modified_date_in_millis" : 1727785358650}}}
}

后续可以持续观察,达到设定的时间后便会自动生成新的索引,旧的索引达到设定时间后会自动删除

4.2 通过Kibana设置实现

4.2.1 配置生命周期策略

Management -> Stack Management -> Index Lifecycle Policies -> Create policy
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 创建索引模板

在这里插入图片描述
在这里插入图片描述
我们在初始化的时候再设置别名,否则会出现报错
在这里插入图片描述

创建索引并验证(流程同API方式4.1.3)

在这里插入图片描述
可以看到生命周期阶段信息
在这里插入图片描述

5. 相关API汇总

1. 创建生命周期策略

PUT _ilm/policy/demo_policy
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "15gb","max_age": "7d","max_docs" : 10000000}}},"warm" : {"min_age" : "2d","actions" : {"shrink" : {"number_of_shards" : 1},"forcemerge" : {"max_num_segments" : 1}}},"delete": {"min_age": "7d","actions": {"delete": {}}}}}
}

2. 创建索引模板

PUT _index_template/test_policy_template
{"index_patterns": ["test_policy*"],"template": {"settings": {"number_of_shards": 1,"number_of_replicas": 0,"index.lifecycle.name": "demo_policy","index.lifecycle.rollover_alias": "policy_index_alias"}}
}

3. 初始化索引

PUT /test_policy-1
{"aliases": {"policy_index_alias": {"is_write_index": true}}
}

4. 设置生命周期策略检查间隔

PUT _cluster/settings
{"transient": {"indices.lifecycle.poll_interval": "20s" }
}

5. 查看索引生命周期状态

GET /test_policy-1/_ilm/explain

6. 生命周期策略重试

POST /log-2024.09.28-000030/_ilm/retry

相关文章:

ES索引生命周期管理

基于如何 定时删除ES索引过期数据 而引发的一系列关于ES索引生命周期管理ILM(Index Lifecycle Management)的学习 快速上手 :定时删除ES索引中的过期数据 1. ILM解决什么问题? ES从6.7版本引入ILM,通过ILM可以解决哪些问题呢? 自动新建…...

Oracle数据库体系结构基础

关于Oracle体系结构 基于Oracle11g体系结构 目标: 了解Oracle体系结构掌握逻辑存储结构掌握物理存储结构熟悉Oracle服务器结构熟悉常用的数据字典 Oracle数据库管理中的重要的三个概念 实例(instance):实例是指一组Oracle后台进程以及在服务器中分配…...

QT学习笔记4.5(文件、参数文件)

QT学习笔记4.5(文件、参数文件) 1.保存配置参数 1.使用QSettings保存到注册表,ini文件 2.文件存储:使用 QFile 和其他类将参数保存到文本文件、二进制文件、XMLWENJIAN、JSON 文件等。 文本文件:以简单的键值对格式…...

服务器虚拟化的详细学习要点

服务器虚拟化的详细学习要点可以归纳为以下几个方面: 1. 基本概念与原理 定义与原理:了解服务器虚拟化是一种将物理服务器资源转化为虚拟服务器资源的技术,允许在一台物理服务器上运行多个虚拟服务器。 虚拟化层次:理解虚拟化的不同层次,如裸机虚拟化(Type 1)和托管虚…...

创建一个Java Web API项目

创建一个Java Web API涉及多个步骤和技术栈,包括项目设置、依赖管理、数据访问层实现、业务逻辑实现、控制层开发以及测试和部署。在这篇详解中,我将带领你通过一个完整的Java Web API实现流程,采用Spring Boot和MyBatis-Plus作为主要技术工具…...

对称加密算法的使用Java和C#

1. JAVA中的使用 1.1.原生使用 Main函数代码 import symmetric_encryption.AESExample; import symmetric_encryption.BlowfishExample; import symmetric_encryption.DESExample; import symmetric_encryption.TripleDESExample; public class App { public static…...

10款好用的开源 HarmonyOS 工具库

大家好,我是 V 哥,今天给大家分享10款好用的 HarmonyOS的工具库,在开发鸿蒙应用时可以用下,好用的工具可以简化代码,让你写出优雅的应用来。废话不多说,马上开整。 1. efTool efTool是一个功能丰富且易用…...

ubuntu22.04中备份Iptables的设置

在 Ubuntu 22.04 中备份 iptables 的设置,您可以采用以下几种方法: 使用 iptables-save 命令: 您可以使用 iptables-save 命令将当前的 iptables 规则保存到文件中。例如,要将规则保存到 /etc/iptables/rules.v4 文件中&#xff0…...

(PyTorch) 深度学习框架-介绍篇

前言 在当今科技飞速发展的时代,人工智能尤其是深度学习领域正以惊人的速度改变着我们的世界。从图像识别、语音处理到自然语言处理,深度学习技术在各个领域都取得了显著的成就,为解决复杂的现实问题提供了强大的工具和方法。 PyTorch 是一个…...

若依从redis中获取用户列表

因为若依放入用户的时候&#xff0c;会在减值中添加随机串&#xff0c;所以用户的key会在redis中变成&#xff1a; login_tokens:6af07052-b76d-44dd-a296-1335af03b2a6 这样的样子。 如果用 Set<Object> items redisService.redisTemplate.keys("login_tokens&…...

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断&#xff0c; 第13关0x00截断 差不多了&#xff0c;今天先学文件上传白名单&#xff0c;在网上看了资料&#xff0c;差不多看懂了&#xff0c;但是还有几个地方需要实验一下&#…...

Chainlit集成LlamaIndex并使用通义千问实现和数据库交互的网页对话应用(text2sql)

前言 我在之前的几篇文章中写了如何使用Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用&#xff0c;但是发现Langchain的几种和数据库交互的组件都不够让我满意&#xff0c;虽然已经满足了大部分场景的需求&#xff0c;但是问题还是很多&#xff0c;比如…...

计组复习笔记

计组笔记 汇编部分 通用寄存器&#xff08;General Registers&#xff09;: AX (Accumulator): 用于累加运算&#xff0c;也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器&#xff0c;通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…...

62. 环境贴图2

环境贴图作用测试 实际生活中光源照射到一个物体上&#xff0c;这个物体反射出去的光线也会影响其他的物体&#xff0c;环境贴图就是用一种简单方式&#xff0c;近似模拟一个物体周边环境对物体表面的影响。 测试&#xff1a;对于PBR材质&#xff0c;如果threejs三维场景不添…...

MATLAB中数据导入与导出的全面指南

在MATLAB中&#xff0c;数据的导入与导出是数据处理工作流中的两个基本步骤。导入是将外部数据加载到MATLAB工作区的过程&#xff0c;而导出则是将工作区中的数据保存到外部文件中。这两个步骤对于数据分析、可视化和结果共享至关重要。本文将详细介绍如何在MATLAB中进行数据的…...

Jenkins从入门到精通,构建高效自动化流程

目录 一、Jenkins简介1、Jenkins的历史与发展&#xff08;1&#xff09;Jenkins的起源&#xff08;2&#xff09;Jenkins的发展&#xff08;3&#xff09;Jenkins的社区与生态系统&#xff08;4&#xff09;Jenkins在我国的发展 2、Jenkins的核心功能3、Jenkins的应用场景 二、…...

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

如何在电脑上浏览手机界面

联想浏览器中&#xff0c;点击右键-》检查&#xff0c;进入开发者工具&#xff1a; 点击如上&#xff0c;红色框框选中的手机浏览模式即可。...

国产RISC-V案例分享,基于全志T113-i异构多核平台!

RISC-V核心优势 全志T113-i是一款双核Cortex-A7@1.2GHz国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Docker容器技术。 而其中的RISC-V属于超高能效副核心,主频高达1008MHz,标配内存管理单元,可运…...

Day(16)--File

File File对象就是表示一个路径&#xff0c;可以是文件路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许是不存在的 常见的方法 public File(String pathname);//根据文件路径创建文件对象 public File(String parent,String child);//根据父路…...

Axios入门使用

文章目录 Axios入门使用一、引言二、Axios的安装与配置1、安装Axios2、创建Axios实例 三、发送HTTP请求1、GET请求2、POST请求3、并发请求 四、配置和拦截器1、配置默认值2、拦截器 五、错误处理和取消请求1、错误处理2、取消请求 四、总结 Axios入门使用 一、引言 随着前端技…...

大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓

文章目录 基于Flink+Hologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓​编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业O…...

关于HTML 案例_个人简历展示02

展示效果 用table进行布局label 标签进行关联 例如&#xff1a;点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…...

Windows 11 24H2 v26100.1742 官方简体中文版

‌Windows 11 24H2是微软最新推出的操作系统更新&#xff0c;其在人工智能&#xff08;AI&#xff09;领域的创新为用户带来了显著的体验提升。该版本的一大亮点是AI Copilot&#xff0c;它能够智能地根据剪贴板内容调整操作上下文菜单&#xff0c;实现更智能化的交互。 此外&…...

【AIGC半月报】AIGC大模型启元:2024.10(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.10&#xff08;上&#xff09; (1) YOLO11&#xff08;Ultralytics新作&#xff09; (1) YOLO11&#xff08;Ultralytics新作&#xff09; 2024.10.01 Ultralytics在 YOLO Vision 2024 活动上宣布发布其新的计算机视觉模型 YOLO…...

Codeforces Beta Round 14 (Div. 2) E. Camels (DP)

题目 Bob likes to draw camels: with a single hump, two humps, three humps, etc. He draws a camel by connecting points on a coordinate plane. Now he’s drawing camels with t humps, representing them as polylines in the plane. Each polyline consists of n ve…...

CSID-GAN:基于生成对抗网络的定制风格室内平面设计框架论文阅读

CSID-GAN: A Customized Style Interior Floor Plan Design Framework Based on Generative Adversarial Network 摘要前言II. CSID-GAN METHODA. Overall FrameworkB. Algorithm and Loss Function III. DATASETS AND EVALUATION METRICSA. DatasetsB. Evaluation Metrics IV.…...

02SQLite

文章目录 索引创建索引删除索引索引优点及缺点&#xff1f;避免使用索引 视图创建视图删除视图 事务事务控制命令通过事务方式对数据库进行访问优势&#xff1a; 索引 创建索引 索引&#xff08;Index&#xff09;是一种特殊查找表&#xff0c;数据库搜索引擎用来加速数据检索…...

学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)

在线学籍管理平台系统 目录 基于SpringbootVUE的在线学籍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…...

JDBC编程

前言&#xff1a; 你是否见过用Java连接数据库的操作&#xff0c;对没错&#xff0c;今天我们要讲的就是这个“高级”操作&#xff0c;做好准备全程高速。 API&#xff1a; 什么是API&#xff1f;我喜欢先把它的全称说一下&#xff1a;Application Programming Interface。简…...