索引的生命周期策略是ELK中非常有意義的功能,一般用於熱(hot)、溫(warm)、冷(clod)數據的索引和分片管理,以及定期刪除過期的數據,以確保ES的健康運行。
划重點:
生命周期有四個重要階段:
hot: 索引需被頻繁的寫入和查詢(快)
warm: 索引不可寫入,但是仍需查詢(中)
cold: 索引不可寫入,很少被查詢(慢)
delete: 索引已無價值,干掉完事
需要注意理解索引生命周期策略的執行邏輯,通常我們會使用滾動更新,並希望當前寫操作的索引處於hot階段以提供最優服務,同時該索引會被記錄為rollover(rollover翻譯過來是“轉換”或“翻轉”的意思,意思就是該索引可轉為warm階段)。
以冷(溫)熱分離為例,若滿足策略hot階段的任一rollover觸發條件時,系統會自動把當前hot階段的索引rollover為warm階段索引(通常會觸發數據遷移至warm節點),同時根據模板創建一個新的索引提供寫入操作,若在轉換為warm時啟用了壓縮則原索引會被命名為shrink開頭,並保留原索引的別名。
配置步驟入下:
1、配置索引生命周期策略(傻瓜式UI操作就不舉例了)
為了盡快看到效果,可以通過調整索引生命周期策略的檢測間隔為10s來看效果,即索引中數據寫入且觸發refresh動作10s后會觸發生命周期檢測與執行,命令如下:
PUT /_cluster/settings { "transient": { "indices.lifecycle.poll_interval": "10s" //系統原默認值是10分鍾 } }
2、配置索引模板(請根據需要自行配置Mapping部分)
PUT _template/test_template { "index_patterns": ["test-*"], "settings": { "number_of_shards": 2, "number_of_replicas": 1, "index.lifecycle.name": "test_policy", //第一步配置的策略名稱 "index.lifecycle.rollover_alias": "test", //策略執行時對rollover狀態的index設置別名
"index.routing.allocation.require.temperature": "hot" //請根據ES集群的配置參數設置紅色部分,如temperature你配置的是是叫box_type,那請改成box_type } }
3、接着就是創建新索引(需匹配上面創建的模板),寫入數據,刷新索引后等待10s觀察是否觸發策略