Elasticsearch索引生命週期管理方案

2022-07-10 14:39:15 字數 4443 閱讀 7746

elasticsearch的日常中,有很多如儲存系統日誌行為資料等方面的應用場景,這些場景的特點是資料量非常大,並且隨著時間的增長索引的數量也會持續增長,然而這些場景基本上只有最近一段時間的資料有使用價值或者會被經常使用(熱資料),而歷史資料幾乎沒有作用或者很少會被使用(冷資料),這個時候就需要對索引進行一定策略的維護管理甚至是刪除清理,否則隨著資料量越來越多除了浪費磁碟與記憶體空間之外,還會嚴重影響elasticsearch的效能;

elastic stack 6.6版本後推出了新功能index lifecycle management(索引生命週期管理),支援針對索引的全生命週期託管管理,並且在kibana上也提供了一套 ui 介面來配置策略。本文主要介紹elasticsearch索引生命週期管理如何配置和使用。

索引生命週期分為4個階段:hot、warm、cold、delete,其中hot主要負責對索引進行rollover操作。

rollover:滾動更新建立的新索引將新增到索引別名,並被指定為寫索引。

ps:4個階段中只有hot階段是必須的

索引根據時間引數min_age進入生命週期階段,若未設定,預設是0ms。min_age通常是從建立索引的時間開始計算,如果索引被設定為滾動索引,那麼min_age是從索引滾動開始計算。注意,在檢查min_age引數並進入下乙個階段前,當前階段的操作必須完成。

階段/action

優先順序設定

取消跟隨

滾動索引

分片分配

唯讀強制段合併

收縮索引

凍結索引

刪除hot√√

√×××

×××warm√√

×√√√

√××cold√√

×√××

×√×delete××

××××

××√下面以索引syslog-2020.10.01為例子,在索引建立 1 天後轉為 warm 階段,30 天後轉為 cold 階段,30 天後刪除

日期動作

階段2020-10-01

建立索引syslog-2020.10.01,處理讀寫請求

hot階段

2020-10-02

syslog-2020.10.01改為唯讀

warm階段

2020-11-01

syslog-2020.10.01為唯讀,並遷移到冷節點儲存

cold階段

2020-12-01

刪除索引syslog-2020.10.01

delete階段

假設policy設定如下:

ip、使用者名稱和密碼按實際情況修改

關聯策略有兩種方式,分別是使用索引模板關聯和索引直接關聯

3.2.1. 索引模板關聯

索引模板來建立所需的索引,並關聯ilm策略

}'

ip、使用者名稱和密碼按實際情況修改

index.lifecycle.name:指明該索引應用的 ilm policy

index.lifecycle.rollover_alias:指明在 rollover 的時候使用的 alias

index.routing.allocation.include.box_type:指明新建的索引都分配在 hot 節點上

3.2.2. 索引直接關聯

為現有的索引單獨關聯策略

ip、使用者名稱和密碼按實際情況修改

http://$ip:9200/my-test-*/_ilm/explain
如果沒有index應用這份策略,那麼我們可以直接更新該策略。

如果有index應用了這份策略,那麼當前正在執行的階段不會同步修改,當當前階段結束後,會進入新版本策略的下個階段。

如果更換了策略,當前正在執行的階段不會變化,在結束當前階段後,將會由新的策略管理下乙個生命週期。

上述的步驟,大部分都可以在kibana中以圖形化介面的方式進行操作

注意:如果使用圖形化介面來建立策略,刪除階段會缺失actions內容而導致無法刪除

ilm service 會在後台輪詢執行 policy,預設間隔時間為 10 分鐘,為了測試更快地看到效果,可將其修改為1秒。

}'

ip、使用者名稱和密碼按實際情況修改

ilm 預設開啟

由ilm管理的所有索引將繼續執行其策略。有時可能不需要某些索引,甚至集群中的所有索引都不需要。例如,當需要集群拓撲更改時,可能會有計畫的維護視窗,這可能會影響正在執行的ilm操作。因此,ilm有兩種禁用操作的方法。

停止ilm時,快照生命週期管理操作也會停止,這意味著不會建立計畫的快照(當前正在進行的快照不受影響)。

通常,ilm將預設執行。要檢視ilm的當前執行狀態,請使用get status api 來檢視ilm的當前狀態。

get  _ilm/status
如果請求沒有遇到錯誤,您將收到以下結果:

ilm的操作模式

階段/action

優先順序設定

正在執行

正常執行,所有策略均正常執行

停止ilm已收到停止請求,但仍在處理某些策略

已停止這表示沒有執行任何策略的狀態

可以暫停ilm服務,以便使用stop api不再執行其他步驟。

post  _ilm/stop
停止後,所有其他政策措施都將停止。這將反映在狀態api中

然後,ilm服務將非同步地將所有策略執行到可以安全停止的位置。在ilm確認它是安全的之後,它將移至該stopped模式

要啟動ilm並繼續執行策略,請使用start api。

post  _ilm/start
start api將向ilm服務傳送請求,以立即開始正常操作。

可以使用以下api來管理索引策略。可參考官方文件 管理索引生命週期。

索引管理api

運營管理api

掃碼關注有驚喜!

Elasticsearch索引建議

背景 最近在做日誌收集,用到elasticsearch作為儲存層,因為日誌量比較大,一天近2t,所以每時每刻都會有大量的插入操作。又由於是給開發人員查日誌使用,所以查詢的量比較小。受限於儲存空間,目前僅保留7天的日誌,多數為乙個業務模組乙個索引,按天切分索引。關於索引和型別的取捨,建立多個索引還是乙...

elasticsearch 建立索引

介紹 分詞器 analyzer 包括乙個分解器 tokenizer 和多個詞元過濾器 filter 詞元過濾器的作是對分詞器提取的詞元進一步處理,比如轉成小寫,使用edge ngram,同義詞等,處理之後成為索引詞 term 文件正包含了幾個這樣的term成為frequency 詞頻 分解器 tok...

Elasticsearch 索引例項

elasticsearch包含了一系列的感念,比如索引 indexing 搜尋 search 以及聚合 aggregations 現在我們主要介紹indexing。在elasticsearch中,文件歸屬於一種型別 type 而這些型別存在於索引 index 中,我們可以畫一些簡單的對比圖來模擬傳統...