Elasticsearch 限制索引大小与索引模板匹配冲突解决方案

文章目录

  • 背景
  • 介绍
  • 环境
  • 限制索引大小
    • 创建 ILM(索引生命周期管理)策略
      • 创建 ILM 策略
    • 创建索引模板并关联 ILM 策略
      • 使用索引模板应用 ILM 策略
  • 解决索引模板匹配冲突
    • ✅ 解决方案
      • 🔹 方案 1:修改 `index_patterns`(推荐)
      • 🔹 方案 2:提高 `priority`(这个更符合我的方案,但不推荐)
      • 🔹 方案 3:删除已有冲突模板
        • 1️⃣ 查看所有索引模板
        • 2️⃣ 删除不需要的 `metrics` 和 `logs` 模板
  • 结论


背景

ES 集群每天都会 触发磁盘报警,让人 非常头疼

为了控制磁盘使用量,我 编写了一个 Shell 脚本,当磁盘 使用率超过 75% 时,就会 自动删除前一天的索引

然而,问题出现了

  • 这些索引 都是当天新产生的,导致 脚本无法提前清理,磁盘空间依然告急。

于是,我开始思考:
🔍 Elasticsearch 是否有参数可以直接限制索引大小? 🤔


介绍

在使用 Elasticsearch 时,我们可能需要 限制索引大小,以防止磁盘占用过多。通常,我们会使用 索引生命周期管理(ILM)策略 来控制索引的大小,同时需要通过 索引模板(Index Template) 来确保新创建的索引符合规则。

然而,在设置索引模板时,可能会遇到 索引匹配冲突 的问题,导致模板无法生效。本文将介绍 如何限制索引大小,并提供 索引模板冲突的解决方案


环境

es集群三台机器
192.168.1.1
192.168.1.2
192.168.1.3


限制索引大小

创建 ILM(索引生命周期管理)策略

ILM 策略允许我们设置 索引的最大大小,并在超出限制时自动滚动到新的索引。

创建 ILM 策略

curl -X PUT "192.168.1.1:9200/_ilm/policy/my_policy" -H "Content-Type: application/json" -d '
{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "50gb",  # 单个索引最大 50GB"max_age": "7d"      # 或者 7 天后滚动}}}}}
}'

这个策略的作用:

  • 当索引达到 50GB存活超过 7 天,会自动 滚动(rollover) 到新索引。

创建索引模板并关联 ILM 策略

使用索引模板应用 ILM 策略

curl -X PUT "192.168.1.1:9200/_index_template/my_template" -H "Content-Type: application/json" -d '
{"index_patterns": ["my_index-*"],  # 只匹配 "my_index-" 开头的索引"priority": 100,"template": {"settings": {"index.lifecycle.name": "my_policy"}}
}'

✅ 这样,所有匹配 my_index-* 的索引都会自动遵循 my_policy 策略!


解决索引模板匹配冲突

在上面的操作中,你可能会遇到以下错误:

index template [my_template] has index patterns [*] matching patterns from existing templates [metrics,logs]

这个错误的意思是:

  • 你的 index_patterns: ["*"] 匹配了所有索引,而你的集群里已经有 metricslogs 模板,并且它们的 priority: 100,导致冲突。

✅ 解决方案

我们可以通过 以下三种方式 解决冲突:

🔹 方案 1:修改 index_patterns(推荐)

最好的做法是 让模板只作用于你需要的索引,而不是所有索引:

curl -X PUT "192.168.1.1:9200/_index_template/my_template" -H "Content-Type: application/json" -d '
{"index_patterns": ["my_index-*"],  # 只匹配 "my_index-" 开头的索引"priority": 100,"template": {"settings": {"index.lifecycle.name": "my_policy"}}
}'

这样不会影响 metricslogs 索引,避免冲突!


🔹 方案 2:提高 priority(这个更符合我的方案,但不推荐)

如果你仍想让你的模板覆盖所有索引(index_patterns: ["*"]),可以 提高 priority,比如改成 200

curl -X PUT "192.168.1.1:9200/_index_template/my_template" -H "Content-Type: application/json" -d '
{"index_patterns": ["*"],"priority": 200,  # 提高优先级,覆盖已有模板"template": {"settings": {"index.lifecycle.name": "my_policy"}}
}'

⚠️ 注意

  • 如果 metricslogs 需要保留原配置,慎用此方法!
  • 推荐方案 1,限制 index_patterns,只作用于部分索引。

🔹 方案 3:删除已有冲突模板

如果 metricslogs 模板不是必须的,可以 先查看模板列表,然后删除:

1️⃣ 查看所有索引模板
curl -X GET "192.168.1.1:9200/_index_template?pretty"
2️⃣ 删除不需要的 metricslogs 模板
curl -X DELETE "192.168.1.1:9200/_index_template/metrics"
curl -X DELETE "192.168.1.1:9200/_index_template/logs"

然后再创建 my_template 模板。

⚠️ 仅适用于 metricslogs 不是你需要的情况下!


结论

方案适用场景风险
修改 index_patterns(推荐)只影响特定索引最安全
提高 priority需要全局覆盖⚠️ 可能影响现有模板
删除冲突模板旧模板不再需要⚠️ 需确保不会影响系统索引

推荐方案 1:修改 index_patterns,确保只影响特定索引,避免影响 metricslogs 这些已有模板。

你可以根据自己的需求选择最合适的方案,确保 Elasticsearch 集群稳定运行! 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[LeetCode]day33 150.逆波兰式求表达值 + 239.滑动窗口最大值

逆波兰式求表达值 题目链接 题目描述 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 ‘’、‘-’、‘*’ 和 ‘/’ 。 每个操作数(运…

论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition

论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition 1 背景2 创新点3 方法3.1 回顾softmax损失3.2 统一交叉熵损失3.3 人脸验证中的UCE损失3.4 进一步的优化3.4.1 边际UCE损失3.4.2 平衡BCE损失 4 实验4.1 消融实验4.2 和SOTA方法对比 论…

Metal学习笔记七:片元函数

知道如何通过将顶点数据发送到 vertex 函数来渲染三角形、线条和点是一项非常巧妙的技能 — 尤其是因为您能够使用简单的单行片段函数为形状着色。但是,片段着色器能够执行更多操作。 ➤ 打开网站 https://shadertoy.com,在那里您会发现大量令人眼花缭乱…

腾讯云 | 微搭低代码快速开发数据表单应用

如上所示,登录腾讯云微搭低代码业务控制台,开始新创建一个应用,创建应用的方式包括,根据实际的业务需求,从模版列表中选择一个模板填入数据模型创建新应用,使用微搭组件自主设计数据模型创建新应用&#xf…

储油自动化革命,网关PROFINET与MODBUS网桥的无缝融合,锦上添花

储油行业作为能源供应链的关键环节,其自动化和监控系统的可靠性和效率至关重要。随着工业4.0的推进,储油设施越来越多地采用先进的自动化技术以提高安全性、降低成本并优化运营。本案例探讨了如何通过使用稳联技术PROFINET转MODBUS模块网关网桥&#xff…

【前端】JavaScript 备忘清单(超级详细!)

文章目录 入门介绍打印调试断点调试数字let 关键字const 关键字变量字符串算术运算符注释赋值运算符字符串插值字符串数字Math全局函数 JavaScript 条件操作符逻辑运算符 &&比较运算符逻辑运算符空值合并运算符 ?? if Statement (if 语句)Ternary Operator (三元运算…

Linux cat 命令

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 使用权限 所有使用者 语法格式 cat [选项] [文件] 参数说明: -n:显示行号,会在输…

PARETO PROMPT OPTIMIZATION

题目 帕累托提示优化 论文地址:https://openreview.net/forum?idHGCk5aaSvE 摘要 自然语言迅速优化或及时工程已成为一种强大的技术,可以解锁大型语言模型(LLMS)的各种任务的潜力。尽管现有方法主要集中于最大化LLM输出的单一特…

前端面试题---.onChange() 事件与焦点机制解析

.onChange() 事件与焦点的总结 焦点(focus) 指的是 当前正在操作的元素(如输入框、按钮)。只有一个元素能同时拥有焦点。 原生 HTML 事件: onchange (需要失去焦点才触发) 用户输入后&#x…

Nest系列:从环境变量到工程化实践-2

文章目录 [toc]一、环境搭建与基础配置1.1 安装验证(新增完整示例)1.2 多环境配置示例 二、模块化配置实战2.1 根模块高级配置2.2 数据库模块专用配置 三、配置获取最佳实践3.1 类型安全获取示例3.2 枚举工程化示例 四、高级场景示例4.1 动态配置热更新4…

3.对象生活的地方—Java环境搭建

1、你要养鱼,总得先有一个鱼塘吧。挖一个鱼塘来养鱼,你需要去做下面这些事情: 规划和设计:确定鱼塘的位置、大小和形状,绘制设计图。标记和测量:使用测量工具标记鱼塘的边界和深度。挖掘:使用挖…

玩转大模型——Trae AI IDE国内版使用教程

文章目录 Trae AI IDE完备的 IDE 功能强大的 AI 助手 安装 Trae 并完成初始设置管理项目什么是 “工作空间”?创建项目 管理插件安装插件从 Trae 的插件市场安装从 VS Code 的插件市场安装 禁用插件卸载插件插件常见问题暂不支持安装 VS Code 插件市场中某个版本的插…

数据结构1-4 队列

一、队列是什么? 先举一个日常例子,排队买饭。 排队买饭 大家按先来后到的顺序,在窗口前排队买饭,先到先得,买完之后走开,轮到下一位买,新来的人排在队尾,不能插队。 可见&#x…

(十 四)趣学设计模式 之 策略模式!

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

探秘基带算法:从原理到5G时代的通信变革【三】Turbo 编解码

文章目录 2.2 Turbo 编解码2.2.1 基本概念与系统构成2.2.2 编码过程分步解析交织器递归系统卷积编码器复接器总结 2.2.3 译码算法分类与原理Turbo码的强大主要来源于其解码器理论基础解码过程详解交织与解交织译码算法总结 2.2.4 Turbo码的应用场景无线通信卫星通信深空通信 2.…

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建,到 OpenCV 实战 在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…

TCP协议(20250304)

1. TCP TCP: 传输控制协议(Transmission Control Protocol),传输层协议之一(TCP,UDP) 2. TCP与UDP UDP(用户数据报协议) 面向数据报无连接不安全不可靠(尽最大努力交…

NModbus 连接到Modbus服务器(Modbus TCP)

1、在项目中通过NuGet添加NModbus,在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…

【零基础到精通Java合集】第十八集:多线程与并发编程-线程池与Callable/Future应用

课程标题:线程池与Callable/Future应用(15分钟) 目标:掌握线程池的创建与管理,理解Callable任务与Future异步结果处理机制 0-1分钟:课程引入与线程池意义 以“银行窗口服务”类比线程池:复用固定资源(柜员)处理多任务(客户)。说明线程池的核心价值——避免频繁创建…

【leetcode hot 100 238】除自身以外数组的乘积

解法一:(左右乘积列表)利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀与后缀)相乘得到答案。 class Solution {public int[] productExceptSelf(int[] nums) {int len nums.length;int[] L new int[len]; …