喬叔的 Elastic Stack 專業教育訓練
  • 喬叔的 Elastic Stack 專業教育訓練
  • 🧑關於喬叔 (Joe Wu)
  • Elastic 課程公開班
    • 🎯Elasticsearch 基礎實務班
      • 💯學員課後回饋
    • 🆕Elasticsearch 進階運維班
      • 💯學員課後回饋
    • Elasticsearch 進階開發班
    • Elastic Stack 基礎實務班
    • Elastic Observability 基礎實務班
    • 📩課程許願池
  • 技術分享
    • 📗喬叔帶你上手 Elastic Stack
      • 前言
      • Elastic Cloud 如何建立 Deployment
        • ES Node 的種類
        • 配置的選擇
      • Index 建立前你該知道的
        • ES Index 如何被建立
        • ES 的超前佈署 - Dynamic Mapping
        • ES 的超前佈署 - Index Template
        • ES Index 的別名 (Alias)
        • 管理你的 Index - Kibana Index
      • 管理 Index 的 Best Practices
        • Shard 的數量與 Rollover & Shrink API
        • 三溫暖架構 - Hot Warm Cold Architecture
        • Index Lifecycle Management (ILM)
        • Rollup
        • Transform
        • Snapshot Lifecycle Management (SLM)
        • 總結
      • Elastic Cloud 比免費版還多的功能
        • Elastic Stack 的方案比較與銷售方式
        • Centralized Beats Management
        • Centralized Pipeline Management
        • Watcher
        • Elasticsearch Token Service
        • Multi-stack monitoring & Automatic stack issue alerts
      • 向 App Search 學習怎麼用 Elasticsearch
        • 揭開 App Search 的面紗
        • Engine 的 Index Settings 篇
        • Engine 的 Mapping 篇
        • Engine 的 Search 基礎剖析篇
        • Engine 的 Search 進階剖析篇
      • Elasticsearch 的優化技巧
        • Indexing 索引效能優化
        • Searching 搜尋效能優化
        • Index 的儲存空間最佳化
        • Shard 的最佳化管理
      • 完賽心得
    • 📘喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
      • 前言 & 淺談 Observability
      • Elastic 的 Observability 解決方案
      • Uptime - 掌握系統的生命徵象
        • 我們要觀測的生命徵象是什麼?
        • 使用 Heartbeat 收集系統生命徵象數據
        • 透過 Kibana 觀看心電圖及設定警報
        • 使用合成監控 (Synthetics Monitor) 從使用者情境驗證服務的運作狀態
      • Metrics - 觀察系統的健康指標
        • Metrics 與 Metricbeat 的基本介紹
        • 使用 Metricbeat 掌握 Elastic Stack 的健康狀態
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Host 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Docker 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Kubernetes 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 AWS 篇
      • Logs - 挖掘系統內部發生的狀況
        • Logs 與 Filebeat 的基本介紹
        • 使用 Filebeat 應該要了解的設計細節與原理
        • 透過 Filebeat 收集 Elastic Stack 中各種服務的細節資訊
        • 透過 Filebeat 收集 Infrastructure 中各種服務的細節資訊
      • Traces - 觀察應用程式的效能瓶頸
        • Elastic APM 基本介紹
        • 使用 APM-Integratoin-Testing 建立 Elastic APM 的模擬環境
        • 如何在 Kibana 使用 APM UI
        • 使用 APM Server 來收集 APM 數據
        • 透過 APM Agents 收集並傳送後端服務運作的記錄
        • 透過真實使用者監控 (RUM, Real User Monitoring) 來改善使用者體驗
      • 建立結構化的 Log
        • Elastic Common Schema 結構化 Log 的規範
        • Elasticsearch Ingest Pipeline 資料 Index 前的轉換好幫手
          • 基本介紹
          • 各種常用的 Processor
          • Enrich 資料與例外處理
      • 有效的使用 Observability 的資料
        • 透過 Machine Learning 發現異常的問題
        • 使用 Kibana Alerts 主動通知異常狀況
        • 資料的生命週期管理
        • 使用 Elastic Observability 追縱及觀察問題的心得
      • 完賽心得
    • 😀Elasticsearch 技術分享小品
      • 🤖Elastic 與 AI
        • Elasticsearch Inference API 讓我們直接在 ES 裡運用 OpenAI Completion API
    • 🎥線上分享
      • 喬叔 Elasticsearch Index 管理與效能優化技巧
      • Elastic Certification 認證經驗分享
    • 🛠️workshop
      • 如何在 Elasticsearch 實現敏捷的資料建模與管理 @ DevOpsDays 2023
        • 工作坊實作內容
      • Elastic Observability 實作體驗坊 @ DevOpsDays 2022
        • 行前準備
        • 工作坊實作內容
      • 當 Elasticsearch 搜尋引擎遇上 AI @ HelloWordDevConference 2024
        • 投影片
        • Elasticsearch 環境準備
        • Google Colab 環境準備
        • 工作坊操作說明
        • ElasticSearch Relevance Engine (ESRE)
    • ⬆️Elastic Stack 版本升級記錄
      • 🔍Elasticsearch
  • 其他專業服務
    • 👩‍🎓企業包班 | 企業內訓
    • 👨‍💼顧問服務
    • 🈺專案合作
    • 🧩Elastic 授權代理
  • 相關連結
    • Facebook 粉絲頁
Powered by GitBook
On this page
  • 前言
  • Elasticsearch Index Management Overview
  • 參考資料
  1. 技術分享
  2. 喬叔帶你上手 Elastic Stack
  3. 管理 Index 的 Best Practices

總結

前言

這個系列的文章總共介紹了各種 Index Management 的管理方式,最後這篇會融合各種方式,以全貌的方式來看 Elastisearch 的 Index 管理方式,如何應用前面介紹的各種機制,來建立完整的 Index Management。

進入此章節的先備知識

  • Elasticsearch Index, Shard, Segment Files 的基本知識。

  • 建議可先閱讀此系列文章的前面章節部份,或是也可以將這篇當成 overview,不清楚的部份再回頭去對照前面章節的詳細介紹。

此章節的重點學習

  • 在 Elasticsearch 中,如何建立一個完整的 Index 管理機制。


Elasticsearch Index Management Overview

進入 Index 的管理,有以下幾個重點:

  • Segment Files 的數量:數量愈多對 查詢的速度 與 磁碟的空間 愈不好。

  • Shard 的數量:愈多對 Indexing 的速度 愈好,但對 查詢成本較高 ,單一 Shard 愈大對 Cluster 的 Rebalance 的成本愈高。

  • Index 的大小:愈大對於 查詢效率 愈好,以 Time-based 資料來看的話,影響的是資料移轉到下一個階段的等待時間。

  • 資料的新舊程度:新的資料通常 使用頻率 較頻繁,會給較好的硬體資源、較舊的資料較少使用,可配置較差的硬體資源。

  • 時間顆粒度:當資料量很大時,在觀察過往的資料往往時間顆粒度會抓較大,並且觀察的彙總的結果 (例如:每天的 log 數量、每天的銷售金額、每天的觀看次數…等)。

  • Index 愈來愈多:資源總是有限,太舊的資料會面臨刪除,可保留的是彙總的結果。

  • 資料的安全性:除了存取控制要妥善的限制之外,資料的備份也是非常重要的機制。

這邊提供一個 Index Lifecycle Management 的概觀圖:

隨著資料的進入,以下是主要的管理階段:

  1. 使用 Index Lifecycle Management 來管理資料的 Hot Warm Cold Architecture:

    1. 新的資料大量寫入 Hot Nodes,所以會配置 較多的 Primary shards。

    2. 隨時間及資料量的成長,為了確保 Index 的資料量在有控制的範圍、以及讓 Hot data 進入 Warm data 以確保 Hot node 的硬體資源分配,會透過 Rollover 將 Index 進行 rotate ,產生新的 Index 來接新的資料,而原先的 Index 會進入下一個 Warm 的階段。

    3. 進入到 Warm data 的階段,會進入 read-only ,所以會透過 Force Merge 與 Shink 將 Segment Files 數量 與 Shards 數量進行最佳化,也可同時配合 Compress 進行儲存空間的優化。

    4. 時間過更久之後,資料進入 Code data 階段,會將 Index 進行 Freeze ,以減少 JVM heap 的使用量,提供較高的延遲反應,但還是能即時使用的服務狀態。

    5. 再更久的資料,可再確認已經被備份過之後進行 刪除。

  2. 使用 Rollup 將資料以較大的時間顆粒度來儲存:

    1. Rollup 可以從 Hot, Warm, Cold 任何的 Index 當中把資料讀出,並且以較大的 時間顆粒度 進行彙總運算,並將結果儲存新的 Index 中。

    2. Rollup 是定時執行,同時 Rollup 的資料在透過 _rollup_search 查詢時,可混搭 Live Data + Rollup Data,結果會自動合併並去除掉重覆的,也因此當舊的資料被刪除後,存在 Rollup 的資料一樣能提供彙總後的查詢結果。

  3. 使用 Transform 將資料以另外的分析結果來儲存:

    1. 將資料以 Pivot 的方式進行分析運算、並將結果儲存在獨立的 Index 中。

    2. 適合複雜的 Aggregation 的運算及彙總報表的定期處理工作。

    3. 也可以這個機制從查詢的彙總結果建立成 Index,並當作 Ingest 處理時 Enrich 資料的 Lookup Data Source。

  4. 使用 Snapshot Lifecycle Management 來管理資料的備份。

    1. 設定 定期的備份。

    2. 設定備份的 保存時間及數量,確保備份所佔用的空間不會無限增長。

以上是 Elasticsearch 針對 Index 管理上的各種使用方式的搭配組合,建議搭配前面的文章進行細部的探討,透過這樣的概念進行資料的管理,可以得到較佳的資源使用與配置的規劃安排。

參考資料

  • 請參考本章節的前面幾篇介紹

PreviousSnapshot Lifecycle Management (SLM)NextElastic Cloud 比免費版還多的功能

Last updated 2 years ago

Elasticsearch Index Management Overview
📗