ES 7.12官网阅读-ILM(index lifecycle management)
官网文档:ILM: Manage the index lifecycle | Elasticsearch Guide [7.12] | Elastic
ILM:管理 index 的生命周期
可以根据你的性能、弹性、保存时长需求,使用ILM策略来自动管理你的index;比如
1. 当一个index达到确定的大小,或者一定数量的documents的时候,启动一个新索引;
2. 按照每天、每周、每月创建新index,并归档之前的index;
3. 删除过期index来执行数据保留标准;
可以通过kibana 管理界面或者ILM 的API来创建和配置ILM策略,当你给Beats或Logstash Elasticsearch的输出插件启用了ILM,默认的策略会自动配置;
自动备份你的index和管理你的snapshots,使用snapshot lifecycle policies;
ILM 可以触发哪些动作
Rollover:当当前index达到确定的大小,确定数量的docs(document)或者期限,创建一个新的index;
Shrink:减少索引中主分片的数量;
Force merge:手动触发发一个merge 来减少index shards 中的segments数量
Freeze: 使index 制度并且最小化内存占用;
Delete:永久删除一个index,包括元数据(metadata)和数据(data)
ILM 使管理在hot-warm-cold架构中的索引变得简单,当你处理日志和指标(metrics)等时间序列数据是,这很常见;
你可以指定:
1. 你想要滚动到新索引的最大分片大小、文档数量或期限
2. 不再更小索引并可以减少主分片数量的点;
3. 何时强制合并并永久删除标记为删除的文档;
4. 可以将索引移至性能较低的硬件的点;
5. 可用性不那么重要并且可以减少副本数量的点;
6. 何时index 可以被安全删除;
举个例子,如果您要将 ATM 机群中的指标数据索引到 Elasticsearch 中,您可以定义一个策略:
1. 当index 的主分片大小达到50GB,roll over(滚动)到一个新索引;
2. 将旧的index移动到warm 阶段(phase),标记制度,并且将其缩小为单个shard;
3. 7天后,移动到cold阶段(phase),并且移动到更便宜(less expensive)的硬件上;
4. 达到要求的30天保留期后删除索引;
使用ILM的注意事项:使用ILM,一个集群中的所有节点都必须运行相同的版本(version),隋岩可能会在混合的版本中创建和应用策略,但是不保证按照预期执行。尝试使用非所有节点都支持的的策略,可能会导致错误
ILM 概念
index 生存周期(lifecycle)
ILM 定义了五个index生存周期阶段(phases):
Hot:该索引正在积极的更新和查询;
Warm:该索引不再被更新但是仍然被查询;
Cold:该索引不再更新,查询也不再频繁,信息仍然需要可搜索,但如果这些查询速度较慢也没关系;
Frozen:该索引不再被更新,很少查询,信息仍然需要被搜索,但如果这些查询速度特别慢也没关系;
Delete:该索引不再被需要,并可以被安全删除;
一个index 生存周期管理策略指定了哪些阶段适用,在每个阶段什么动作被执行,以及何时在阶段之间转换。
你可以在你创建一个index 的时候,手动应用一个lLM策略,对于时间序列索引,你需要关联ILM策略到用于创建新的时序index的index template。当一个index 滚动(roll over)创建,一个手动应用的策略不会自动应用到新的index。
如果你使用Elasticsearch安全特性,ILM以上次更新策略的用户身份执行操作,ILM 仅具有上次策略更新时分配给用户的角色权限;
阶段转换(Phase transitions)
ILM通过他们的存在期限来移动index,为了控制他们的转换时间,你可以为每个阶段设置一个最小期限(minimum age),对于一个移动到下一阶段的index,所有在当前阶段的action(动作)必须完成,并且索引必须早于下一阶段的最小期限(minimum age);
默认最小期限(minimum age)默认是0 ,这会导致ILM在当前阶段的所有操作完成后立即将索引移动到下一阶段;
如果一个index 存在未分配(unallocated)分片(shard)或者集群状态(cluster health status)是yellow,index仍能够根据ILM策略转换到下一个节点。然而因为Elasticsearch只能在Green的状态下才能执行确认的清理任务,这可能造成想不到的副作用(side effects)
避免增加磁盘使用率和可靠性问题,及时(in timely fashion)定位所有集群健康问题
阶段执行(Phase execution)
ILM控制阶段中操作的执行顺序以及执行哪些步骤来执行每个所需的索引操作。
当一个index 进入一个阶段(phase)ILM 在index 的元数据(metadata)中缓存这个阶段(phase)定义。这样确保策略更新不会使索引陷入到永远无法退出阶段的状态,如果修改(changes)能够被安全的应用,ILM更新缓存的阶段定义,如果他们不能,阶段执行继续使用缓存的定义。
ILM周期性运行,检查是否有index 满足策略标准(criteria),并执行所需的任何步骤。避免竞争(race)条件,ILM可能需要运行多次才能执行完成操作所需的所有步骤。例如,如果ILM确定一个索引已经满足了rollover(滚动更新)标准(criteria),ILM开始执行完成rollover(滚动更新)所需的所有步骤,如果达到无法安全进入下一步的程度,则执行停止,下一次ILM运行时,ILM将从中断处继续运行。这意味着即使indices.lifecycle.poll_interval 是设置的是10分钟,并且一个index满足rollover(滚动更新)criteria(标准),可能会花费20分钟来完成rollover
阶段动作(Phase actions)
在每个阶段ILM支持的动作(action)如下;
Hot
Set Priority
Unfollow
Rollover
Read-Only
Shrink
Force Merge
Warm
Set Priority
Unfollow
Read-Only
Allocate
Migrate
Shrink
Force Merge
Cold
Set Priority
Unfollow
Allocate
Freeze
Searchable Snapshot
Frozen
Searchable Snapshot
Delete
Wait for Snapshot
Delete
Rollover(滚动更新)
当你索引(indexing)像日志(log)或者指标(metrics)你不可能无限期(indefinitely)写入到一个单独的index中。为了满足你的indexing和查询性能要求以及管理资源使用率,当你写入的index达到一个阈值的时候,创建一个新的index,并开始往新的index 中写入。使用滚动创建indices是你能够做:
- 优化活动索引,以实现高效能hot节点上的高摄取率(ingest rates);
- 优化warm节点上的搜索性能;
- 将旧的,访问频率较低的数据转移(shift)到成本较低的cold节点;
- 通过删除整个索引,根据你的保留策略删除数据;
我们推荐你使用data streams 来管理时序数据。Data streams自动跟踪写入索引,同时将配置保持在最低限度;
每个data streams要求一个index template包括:
- 数据流的名称或通配符(*)模式(wildcard pattern)
- 数据流时间戳字段,这个字段必须映射为date或者date_nanos字段数据类型,并且必须包含在index到data stream的每个文档中;
- 创建每个支持(backing)index的映射(mapping)和设置(setting)
Data streams专为附加数据(append-only)而设计,其中data stream 名称可用作(读、写、滚动更新(rollover)、收缩(shrink) 等)目标;如果你的用例需要就地更新数据,你可以使用索引别名(index aliases)来管理时序数据;然而,这里有一些额外的配置步骤和概念:
- 索引模版,指定时序中每个新索引的配置,你可以优化此配置以进行摄取(ingest),通常使用与hot节点数量一样多的分片。
- 引用整个索引集的索引别名;
- 指定为写索引的单个索引,这是处理所有写入请求的活动index,每次rollover是,新索引将会成为写入索引;
自动滚动更新(Automatic rollover)
ILM使你能够基于index 大小,document数量,保存时间(age)自动滚动更新(automatic rollover),当一个rollover 被触发,一个新的index 被创建,一个写别名(write alias)被更新执行新索引,索引后续的更新被写入到新的index;
TIP:根据大小、文档计数或期限(age)滚动到新索引比基于时间的滚动更可取。在任意时间(arbitrary time)rollover通常会产生许多小索引,这可能会对性能和资源使用产生负面影响。
Policy updates(策略更新)
你可以通过修改当前策略或切换到不同的策略来更改索引或滚动索引集合的生命周期的管理方式。
为了确保策略更新不会将索引置于无法退出当前阶段的状态,阶段定义在进入该阶段时会缓存在索引元数据中。如果可以安全地应用更改,ILM 会更新缓存的阶段定义。如果不能,阶段执行将继续使用缓存的定义。
当索引前进到下一阶段时,它使用更新策略中的阶段定义
如何应用修改(How changes are applied )
当策略最初应用于索引时,索引获取最新版本的策略,如果更新策略,策略版本会发生变化(bumped),并且 ILM 可以检测到索引正在使用需要更新的早期版本。
对 min_age 的更改不会传播到缓存的定义。更改阶段的 min_age 不会影响当前正在执行该阶段的索引
例如,如果您创建的策略具有未指定 min_age 的热阶段,则应用该策略时索引会立即进入热阶段。如果您随后更新策略以将热阶段的 min_age 指定为 1 天,则这对已处于热阶段的索引没有影响。策略更新后创建的index要到一天后才会进入热门阶段 。
如何应用新策略(How new policies are applied)
当您将不同的策略应用于托管索引时,索引将使用先前策略中的缓存定义来完成当前阶段。该指数在进入下一阶段时开始使用新政策。
相关文章:
ES 7.12官网阅读-ILM(index lifecycle management)
官网文档:ILM: Manage the index lifecycle | Elasticsearch Guide [7.12] | Elastic ILM:管理 index 的生命周期 可以根据你的性能、弹性、保存时长需求,使用ILM策略来自动管理你的index;比如 1. 当一个index达到确定的大小&a…...
Jenkins执行策略(图文讲解)
Jenkins执行策略-图文讲解 一:手动执行1、手动执行流程2、手动执行操作 二、通过构建触发器——定时执行1、定时执行流程2、定时执行操作 三、当开发部署成功之后进行执行——在测试项配置——关注的项目1、执行流程2、操作流程 四、测试代码有更新的时候自动构建1、…...
1,static 关键字.Java
目录 1.概述 2.定义格式和使用 2.1 静态变量及其访问 2.2 实例变量及其访问 2.3 静态方法及其访问 2.4 实例方法及其访问 3.小结 1.概述 static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。被static修饰后的ÿ…...
网络语义实体对齐(Entity Alignment)相关论文与数据集整理
传统的实体对齐方法主要通过属性相似度匹配的方式实现,利用有监督学习的机器学习模型,如:决策树、支持向量机、集成学习等。依赖实体的属性信息,通过属性相似度,进行跨平台实体对齐关系的推断。基于知识表示学习的方法通过将知识图谱中的实体和关系都映射低维空间向量,直…...
【自动装箱以及包装类的缓存】⭐️通过具体案例看下每种包装类的不同结果
目录 前言 一、自动装箱与拆箱(以 Integer 包装类为例) 二、再来看看几个示例 三、Double ,Float 类型亦是如此吗? 四、补充 前言 小伙伴们大家好,日常使用业务层方面的代码居多,但也不可忘了基本的一些代码格式…...
Java(内部类)
1.内部类 内的五大成员:属性、方法、构造方法、代码块、内部类 解释:在一个类的里面,再定义一个类。举例:在A类的内部定义B类,B类就被称为内部类注意:内部类表示的事物是外部类的一部分,内部类单独出现没…...
c++对象指针
对象指针在使用之前必须先进行初始化。可以让它指向一个已定义的对象,也可以用new运算符动态建立堆对象。 定义对象指针的格式为: 类名 *对象指针 &对象; //或者 类名 *对象指针 new 类名(参数); 用对象指针访问对象数据成员的格式为:…...
js 拼接HTML时 onclick方法和传参报错[onject Object] 和 unexpected end of input`
Vue js拼接onclick事件 1.onclick 方法函数找不到2.方法中传参2.1 int 类型传参(直接传参)2.2 字符串类型(需要加引号)2.3 对象(对象是不能直接拼接的。拼接的必须是字符串。因此需要将对象转成字符串。) 1…...
基于springboot实现定时任务,并且添加Event事件处理机制
1、基于Spring-Event增加事件处理机制 import org.bson.Document; import org.springframework.context.ApplicationEvent;/*** 基于Spring-Event增加事件处理机制* create: 2024/4/1-13:33*/ public class SysProductConfigEvent extends ApplicationEvent {// 数据配置priv…...
深入理解数据结构(1):复杂度详解
文章主题:复杂度详解🌱所属专栏:深入理解数据结构📘作者简介:更新有关深入理解数据结构知识的博主一枚,记录分享自己对数据结构的深入解读。😄个人主页:[₽]的个人主页🔥…...
kette介绍-Step之Merge Join
Merge Join介绍 需要配合Sort rows使用,对关联字段进行排序 关联两个step数据,可以是两个不同的数据库表数据,也可以是一张表,一个文件,输出字段为两张表所有字段 注意将小数据集作为first step Join Type有四个选项 INNER对应…...
通俗易懂:MySQL中如何设置只读实例并确保数据一致性?
在MySQL中设置只读实例主要应用于构建高可用性和扩展性的数据库环境,通常是为了分担读取负载或者用于备份和灾难恢复。以下是创建MySQL只读实例并确保数据一致性的基本步骤: 1. 创建并配置只读实例 - 主从复制设置 - 首先,你需要有一个主数…...
一文了解Java核心知识——线程池
介绍 什么是线程池? 管理一系列线程的资源池。当有任务要处理时,直接从线程池中获取线程来处理,处理完之后线程并不会立即被销毁,而是等待下一个任务。 为什么要使用线程池? 池化技术的思想主要是为了减少每次获取资…...
Redis热点Key问题分析与解决
目录 一、问题现象描述 二、什么是热点Key 三、热点Key的危害 3.1 Redis节点负载过高 3.2 Redis集群负载不均 3.3 Redis集群性能下降 3.4 数据不一致 3.5 缓存击穿 四、热点Key产生的原因分析 4.1 热点数据 4.2 业务高峰期 4.3 代码逻辑问题 五、如何检测热点Key …...
深度学习armv8/armv9 cache的原理
快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 1、为什么要用cache? ARM 架构刚开始开发时,处理器的时钟速度和内存的访问速度大致相似。今天的处理器内核要复杂得多,并且时钟频率可以快几个数量级。然…...
Python基础之pandas:文件读取与数据处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、文件读取1.以pd.read_csv()为例:2.数据查看 二、数据离散化、排序1.pd.cut()离散化,以按范围加标签为例2. pd.qcut()实现离散化3.排序4.…...
基于Springboot旅游网站管理系统设计和实现
基于Springboot旅游网站管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…...
深度解析C语言——预处理详解
对C语言有一定了解的同学,相信对预处理一定不会陌生。今天我们就来聊一聊一些预处理的相关知识。预处理是在编译之前对源文件进行简单加工的过程,主要是处理以#开头的命令,例如#include <stdio.h>、#define等。预处理是C语言的一个重要…...
idea2023.2.1 java项目-web项目创建-servlet类得创建
如何创建Java项目 1.1 方式1: 1.2 方式: 1.3 方式 如何创建web项目 方式 ----- 推荐 如何创建servlet类 复制6 中得代码 给servlet 配置一个路径 启动tomcat 成功了...
Ollama教程——入门:开启本地大型语言模型开发之旅
Ollama教程——入门:开启本地大型语言模型开发之旅 引言安装ollamamacOSWindows预览版LinuxDocker ollama的库和工具ollama-pythonollama-js 快速开始运行模型访问模型库 自定义模型从GGUF导入模型自定义提示 CLI参考创建模型拉取模型删除模型复制模型多行输入多模态…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
