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参考创建模型拉取模型删除模型复制模型多行输入多模态…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
