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

【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。

以下是对 Elasticsearch 官方教程《Customize built-in ILM policies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。

---

Elasticsearch 教程:自定义内置 ILM 策略

1.背景与目标

Elasticsearch 提供了内置的索引生命周期管理(ILM)策略,例如`logs@lifecycle`、`metrics@lifecycle`和`synthetics@lifecycle`。这些策略主要用于管理 Elastic Agent 收集的数据流(data streams)的后端索引。然而,这些默认策略可能无法完全满足您的性能、弹性和数据保留需求。因此,Elasticsearch 允许用户根据自己的需求自定义这些策略。

本教程的目标是帮助您根据以下需求自定义 ILM 策略:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 滚动后,将索引保留在热数据层 30 天。

• 滚动 30 天后,将索引移动到温数据层,设置副本分片数为 1,并强制合并索引段以释放已删除文档占用的空间。

• 滚动 90 天后删除索引。

2.前提条件

在开始自定义 ILM 策略之前,您需要准备以下环境:

2.1 Elasticsearch 集群

• 热数据层(Hot Tier):用于存储最近的数据,提供高性能的读写操作。

• 温数据层(Warm Tier):用于存储较旧的数据,适合读取操作,但写入性能较低。

如果使用Elasticsearch 服务:

• 默认情况下,Elastic Stack 部署包含热层。

• 要添加温层,可以通过编辑部署并点击“添加温数据层的容量”来完成。

如果使用自管集群:

• 需要为节点分配`data_hot`和`data_warm`角色。

• 例如,在温层的每个节点的`elasticsearch.yml`文件中添加以下配置:

```yaml

  node.roles: [data_warm]

  ```

2.2 Elastic Agent

• 需要一个安装并配置好的 Elastic Agent,用于将日志数据发送到 Elasticsearch 集群。

• Elastic Agent 使用数据流(data streams)存储日志监控数据,索引模式为`logs-*-*`。

3.自定义 ILM 策略

3.1 查看默认的 ILM 策略

默认的`logs@lifecycle`策略会自动管理`logs-*-*`数据流的后端索引。该策略的默认行为如下:

• 当写入索引的主分片大小达到 50GB 或索引满 30 天时,滚动到新索引。

• 该策略旨在防止创建许多微小的每日索引。

3.2 创建新的 ILM 策略

由于直接编辑管理的策略可能会被回滚或覆盖,因此建议将默认策略另存为新策略,并对其进行自定义。

1. 打开 Kibana:

• 转到堆栈管理(Stack Management)>索引生命周期策略(Index Lifecycle Policies)。

• 切换“包含管理的系统策略(Include managed system policies)”以显示默认的`logs@lifecycle`策略。

2. 另存为新策略:

• 选择`logs@lifecycle`策略。

• 在“编辑策略日志(Edit policy logs)”页面上,切换“另存为新策略(Save as new policy)”,并为新策略命名,例如`logs-custom`。

3.3 自定义策略的阶段和设置

ILM 策略包含多个阶段(Phase),每个阶段都有特定的行为和设置。我们将根据需求自定义以下阶段:

3.3.1 热阶段(Hot Phase)

• 滚动设置(Rollover Settings):

• 默认情况下,`logs@lifecycle`策略会在索引的主分片大小达到 50GB 或索引满 30 天时滚动到新索引。

• 如果需要修改滚动条件,可以点击“高级设置(Advanced settings)”,并禁用“使用推荐默认值(Use recommended defaults)”。

• 例如,可以将滚动条件设置为“索引大小达到 40GB 或索引满 20 天”。

3.3.2 温阶段(Warm Phase)

• 激活温阶段:

• 默认情况下,`logs@lifecycle`策略可能没有启用温阶段。您需要手动启用并配置它。

• 点击“高级设置(Advanced settings)”。

• 设置“将数据移入阶段的时间(Move data into phase when)”为“30 天旧”,表示在滚动 30 天后将索引移至温层。

• 启用“设置副本(Set replicas)”,并将“副本数量(Number of replicas)”设置为 1。

• 启用“强制合并数据(Force merge data)”,并将“段数(Number of segments)”设置为 1。这有助于释放已删除文档占用的空间。

3.3.3 删除阶段(Delete Phase)

• 启用删除阶段:

• 在温阶段,点击垃圾桶图标以启用删除阶段。

• 在删除阶段,设置“将数据移入阶段的时间(Move data into phase when)”为“90 天旧”,表示在滚动 90 天后删除索引。

3. 保存新策略:

• 完成所有配置后,点击“保存为新策略(Save as new policy)”。

4.应用新的 ILM 策略

创建并配置好新的 ILM 策略后,需要将其应用于`logs`索引模板,以便 Elastic Agent 使用该策略管理日志数据。

1. 创建组件模板(Component Template):

• 转到 Kibana 的组件模板(Component Templates)页面。

• 点击“创建组件模板(Create component template)”。

• 命名组件模板为`logs@custom`。

• 在“索引设置(Index settings)”中,指定新创建的 ILM 策略名称:

```json

     {

       "index": {

         "lifecycle": {

           "name": "logs-custom"

         }

       }

     }

     ```

• 审核并保存组件模板。

2. 更新索引模板(Index Template):

• 转到索引模板(Index Templates)页面。

• 选择`logs`索引模板。

• 查看“组件模板(Component templates)”列表,确认`logs@custom`组件模板已被添加。

5.总结

通过以上步骤,您可以根据自己的需求自定义 Elasticsearch 的内置 ILM 策略。自定义策略允许您灵活地管理索引的生命周期,包括滚动、数据层迁移、副本设置以及索引的最终删除。这有助于优化集群的性能、资源利用率和数据保留策略。

 

 

6.注意事项

• 不要直接编辑管理的策略:直接修改默认的管理策略可能会导致策略被回滚或覆盖。建议始终通过“另存为新策略”的方式来创建自定义策略。

• 测试新策略:在生产环境中应用新策略之前,建议在测试环境中验证其行为,确保它符合您的预期。

• 监控与调整:ILM 策略的设置可能需要根据实际使用情况进行调整。建议定期监控集群的性能和资源使用情况,并根据需要优化策略。

通过本教程,您应该能够根据自己的需求自定义 Elasticsearch 的 ILM 策略,并将其应用于实际的数据管理场景中。

相关文章:

【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。

以下是对 Elasticsearch 官方教程《Customize built-in ILM policies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。 --- Elasticsearch 教程:自定义内置 ILM 策略 1.背景…...

测试工程师Ai应用实战指南简例prompt

以下是一个真实具体的案例,展示测试工程师如何在不同阶段结合DeepSeek提升效率。案例基于电商平台"订单超时自动关闭"功能测试: 案例背景 项目名称:电商平台订单系统V2.3 测试目标:验证"用户下单后30分钟未支付,订单自动关闭并释放库存"功能 技术栈:…...

(十 二)趣学设计模式 之 享元模式!

目录 一、 啥是享元模式?二、 为什么要用享元模式?三、 享元模式的实现方式四、 享元模式的优缺点五、 享元模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…...

Trae:国内首款AI原生IDE,编程效率大提升

今年一月,在新闻上看到字节跳动面向海外市场推出了一款名为Trae的AI集成开发环境(IDE)。起初,我并未给予过多关注,因为市面上已有不少IDE集成了AI插件,功能也非常全面,而字节跳动自家的MarsCode…...

深入解析 Vue Router 的 beforeEach:功能、用法与实践指南

什么是 beforeEach?基本语法与参数解析next() 的 4 种调用方式常见使用场景与代码示例动态路由加载的实践技巧常见陷阱与避坑指南总结 1. 什么是 beforeEach? beforeEach 是 Vue Router 提供的 全局前置守卫(Global Before Guards&#xff0…...

RocketMQ定时/延时消息实现机制

RocketMQ 的延迟消息是其核心特性之一,允许消息在指定延迟时间后才被消费者消费。 定时消息生命周期 一、延迟消息的核心机制 RocketMQ(5.0之前) 不支持任意时间精度的延迟,而是通过预定义的 延迟级别(Delay Level&a…...

基于SpringBoot的校园二手交易平台(源码+论文+部署教程)

运行环境 校园二手交易平台运行环境如下: • 前端:Vue • 后端:Java • IDE工具:IntelliJ IDEA(可自行更换) • 技术栈:SpringBoot Vue MySQL 主要功能 校园二手交易平台主要包含前台和…...

如何快速写出国内外现状的内容并且引用对应的参考文献(近三年的论文)

解决方法: 1.首先从知网或者谷歌学术中搜索相关关键字的论文根据时间排列(最新的在前面)。然后多选选中自己想要引用的论文(一般近三年的论文要占2/3),然后导出参考文献 [19] Lu L, Jin P, Karniadakis G E. DeepONet: Learning nonlinear operators for identifying dif…...

SQL的select语句完整的执行顺序

SQL的SELECT语句的执行顺序可以用"做菜流程"来类比理解。虽然我们写SQL时按SELECT…FROM…WHERE…顺序写,但数据库执行顺序完全不同。以下是通俗易懂的讲解(附流程图和示例): 🔧 执行顺序流程图&#xff1a…...

开源操作系统纷争:CentOS停服后的新战场

开源操作系统纷争:CentOS停服后的新战场 引言 2020年12月,Red Hat宣布将停止维护CentOS Linux,转而专注于CentOS Stream。这一决策在开源社区掀起轩然大波,尤其是那些依赖CentOS作为生产环境操作系统的企业和开发者们&#xff0…...

【知识】torchrun 与 torch.multiprocessing.spawn 的对比

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 来自ChatGPT、DeepSeek 有点干,可仅做了解。 torchrun 和 torch.multiprocessing.spawn 都是在 PyTorch 中用于并行化和分布式训练的工具&a…...

利用 LangChain 和一个大语言模型(LLM)构建一个链条,自动从用户输入的问题中提取相关的 SQL 表信息,再生成对应的 SQL 查询

示例代码: from langchain_core.runnables import RunnablePassthrough from langchain.chains import create_sql_query_chain from operator import itemgetter from langchain.chains.openai_tools import create_extraction_chain_pydantic# 系统消息&#xff…...

力扣hot 100之矩阵四题解法总结

本期总结hot100 中二维矩阵的题,时空复杂度就不分析了 1.矩阵置零 原地标记,用第一行和第一列作为当前行列是否为0的标记,同时用两个标签分别记录0行、0列的标记空间中原本是否有0 class Solution:def setZeroes(self, matrix: List[List[…...

使用python运行网格世界环境下 TD算法

一、概述 本代码实现了在网格世界环境中使用 TD (0)(Temporal Difference (0))算法进行策略评估,并对评估结果进行可视化展示。通过模拟智能体在网格世界中的移动,不断更新状态值函数,最终得到每个状态的价值估计。 二…...

在Linux上使用APT安装Sniffnet的详细步骤

一、引言 Sniffnet 是一款开源的网络流量监控工具,适用于多种Linux发行版。如果你的Linux系统使用APT(Advanced Package Tool)作为包管理器,以下是如何通过APT安装Sniffnet的详细步骤。 二、系统要求 在开始安装之前&#xff0…...

zookeeper-docker版

Zookeeper-docker版 1 zookeeper概述 1.1 什么是zookeeper Zookeeper是一个分布式的、高性能的、开源的分布式系统的协调(Coordination)服务,它是一个为分布式应用提供一致性服务的软件。 1.2 zookeeper应用场景 zookeeper是一个经典的分…...

StableDiffusion本地部署 3 整合包猜想

本地部署和整合包制作猜测 文章目录 本地部署和整合包制作猜测官方部署第一种第二种 StabilityMatrix下载整合包制作流程猜测 写了这么多python打包和本地部署的文章,目的是向做一个小整合包出来,不要求有图形界面,只是希望一键就能运行。 但…...

数据结构(初阶)(七)----树和二叉树(前中后序遍历)

实现链式结构的二叉树 实现链式结构的二叉树遍历前序遍历中序遍历后序遍历 节点个数叶子节点个数⼆叉树第k层结点个数⼆叉树的深度/⾼度查找值为X的节点二叉树的销毁 层序遍历判断二叉树是否为完全二叉树 ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。 通常…...

SOME/IP 教程知识点总结

总结关于SOME/IP的教程,首先通读整个文件,理解各个部分的内容。看起来这个教程从介绍开始,讲到了为什么在车辆中使用以太网,然后详细讲解了SOME/IP的概念、序列化、消息传递、服务发现(SOME/IP-SD)、发布/订阅机制以及支持情况。 首先,我需要确认每个章节的主要知识点。…...

安装 Windows Docker Desktop - WSL问题

一、关联文章: 1、Docker Desktop 安装使用教程 2、家庭版 Windows 安装 Docker 没有 Hyper-V 问题 3、打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题 二、问题解析 打开 Docker Desktop 出现问题,如下: Docker Desktop - WSL update failed An error o…...

科技赋能筑未来 中建海龙MiC建筑技术打造保障房建设新标杆

近日,深圳梅林路6号保障房项目顺利封顶,标志着国内装配式建筑领域又一里程碑式突破。中建海龙科技有限公司(以下简称“中建海龙”)以模块化集成建筑(MiC)技术为核心,通过科技创新与工业化建造深…...

json介绍、python数据和json数据的相互转换

目录 一 json介绍 json是什么? 用处 Json 和 XML 对比 各语言对Json的支持情况 Json规范详解 二 python数据和json数据的相互转换 dumps() : 转换成json loads(): 转换成python数据 总结 一 json介绍 json是什么? 实质上是一条字符串 是一种…...

关于学习一门新的编程语言的策略

实践 实践 实践 那么如何实践呢 ,very easy,测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测验 测…...

Rust 是什么

Rust 是什么 Rust 是一种由 Mozilla 开发的系统级编程语言,它于 2010 年首次亮相,在 2015 年发布 1.0 版本,此后迅速发展并受到广泛关注。 内存安全:Rust 最大的亮点之一是它在编译阶段就能够避免常见的内存错误,如空指针引用、数据竞争和内存泄漏等。它通过所有权(Owne…...

C#开发——时间间隔类TimSpan

TimeSpan 是 C# 中的一个结构( struct ),用于表示时间间隔或持续时间。它位于 System 命名空间中,是处理时间相关操作时非常重要的工具,尤其是在计算两个日期或时间之间的差值、表示时间段或执行时间相关的运算…...

计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)

文章目录 概要项目演示图片系统架构技术运行环境系统功能简介 概要 网络上许多计算机毕设项目开发前端界面设计复杂、不美观,而且功能结构十分单一,存在很多雷同的项目:不同的项目基本上就是套用固定模板,换个颜色、改个文字&…...

[随手笔记]C#保留小数防止四舍五入有效解决办法

private decimal 截断小数(decimal 原小数值, int 保留小数个数) { string 原小数转字符串值 原小数值.ToString(); try { if (原小数转字符串值.Contains(".")) { int 原小数总长度 原小数转字符串值.Length; …...

C++ 二叉树代码

二叉树代码&#xff0c;见下 #include <iostream> using namespace std;template<typename T> struct TreeNode{T val;TreeNode *left;TreeNode *right;TreeNode():val(0), left(NULL), right(NULL)TreeNode(T x):val(x), left(NULL), right(NULL){} };template&l…...

Spring Boot 测试:单元、集成与契约测试全解析

一、Spring Boot 分层测试策略 Spring Boot 应用采用经典的分层架构&#xff0c;不同层级的功能模块对应不同的测试策略&#xff0c;以确保代码质量和系统稳定性。 Spring Boot 分层架构&#xff1a; Spring Boot分层架构 A[客户端] -->|HTTP 请求| B[Controller 层] …...

Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)

在 Oracle 数据库的学习进程中&#xff0c;分组查询与联表查询是进阶阶段的重要知识点&#xff0c;它们如同数据库操作的魔法棒&#xff0c;能够从复杂的数据中挖掘出有价值的信息。对于 Java 全栈开发者而言&#xff0c;掌握这些技能不仅有助于高效地处理数据库数据&#xff0…...