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.pswp.cn/diannao/72455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72455.shtml
英文地址,請注明出處:http://en.pswp.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]; …