Elasticsearch ILM DSL 索引生命週期管理
1、冷熱叢集架構
冷熱架構也叫冷暖架構,是“Hot-Warm” Architecture的中文翻譯。
冷熱架構本質是給節點設定不同的屬性,讓每個節點具備了不同的屬性。為演示 ILM,需要首先配置冷熱架構,三個節點在 elasticsearch.yml 分別設定的屬性如下:
檢視es冷熱叢集架構
2、不同階段(Phrase)的功能點(Acitons)
注意:僅在 Hot 階段可以設定:Rollover 滾動。
3、各生命週期 Actions 設定
後兩節演示要用。
3.1 Hot 階段
基於:max_age=3天、最大文件數為3、最大size為:30gb rollover 滾動索引。
設定優先順序為:100(值越大,優先順序越高)。
3.2 Warm 階段
實現段合併,max_num_segments 設定為1.
副本設定為 0。
資料遷移到:warm 節點。
優先順序設定為:50。
3.3 Cold 階段
冷凍索引
資料遷移到冷節點
3.4 Delete 階段
刪除索引
關於觸發滾動的條件:
Hot 階段的觸發條件:手動建立第一個滿足模板要求的索引。
其餘階段觸發條件:min_age,索引自建立後的時間。
時間類似:業務裡面的 熱節點保留 3 天,溫節點保留 7 天,冷節點保留 30 天的概念。
4、 索引生命週期管理 ILM DSL
# step1: 前提:演示重新整理需要,將索引生命管理重新整理為1秒 curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/_cluster/settings" -H 'Content-Type: application/json' -d'{ "persistent": { "indices.lifecycle.poll_interval": "1s" } }' # step2:測試需要,值調的很小 curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/_ilm/policy/my_test_policy" -H 'Content-Type: application/json' -d'{ "policy": { "phases": { "hot": { "actions": { "rollover": { "max_age": "3d", "max_docs": 3, "max_size": "30gb" }, "set_priority": { "priority": 100 } } }, "warm": { "min_age": "50s", "actions": { "forcemerge": { "max_num_segments": 1 }, "allocate": { "require": { "box_type": "warm" }, "number_of_replicas": 0 }, "set_priority": { "priority": 50 } } }, "cold": { "min_age": "50s", "actions": { "allocate": { "require": { "box_type": "cold" } }, "freeze": {} } }, "delete": { "min_age": "60s", "actions": { "delete": {} } } } } }' # step3:建立模板,關聯配置的ilm_policy curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/_index_template/ilm_template" -H 'Content-Type: application/json' -d'{ "index_patterns": ["ilm-*"], "template": { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "index.lifecycle.name": "my_test_policy", "index.lifecycle.rollover_alias": "ilm", "index.routing.allocation.require.box_type": "hot" } } }' # step4:建立起始索引(便於滾動) curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/ilm-000001" -H 'Content-Type: application/json' -d'{ "aliases": { "ilm": { "is_write_index": true } } }' # step5:插入資料 curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/ilm/_doc/1" -H 'Content-Type: application/json' -d' {"title":"count1"} ' curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/ilm/_doc/2" -H 'Content-Type: application/json' -d' {"title":"count2"} ' 檢視索引的資料量 curl ' 查案索引分片的分佈 curl ' # step6:臨界值(會滾動) curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/ilm/_doc/3" -H 'Content-Type: application/json' -d' {"title":"count3"} ' # 下一個索引資料寫入(max_docs 滿足條件索引會由hot -> warn -> cold & delete ) curl -XPUT "elastic:Ntn71CrUSaTjk7TNWora@172.26.180.1:9200/ilm/_doc/4" -H 'Content-Type: application/json' -d' {"title":"count4"} '
索引生命週期管理效果:
核心步驟總結如下:
第一步:建立生週期 policy,定義phases與actions。
第二步:建立索引模板,模板中關聯 policy 和別名。
第三步:建立符合模板的起始索引,並插入資料。
第四步: 索引基於配置的 ilm 滾動,觸發各個階段的actions。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2948246/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 索引生命週期管理ILM看完不懂你錘我索引
- Elasticsearch Query DSL建立滾動索引(生命週期策略)Elasticsearch索引
- Elasticsearch索引生命週期管理方案Elasticsearch索引
- ElasticSearch生命週期管理-索引策略配置與操作Elasticsearch索引
- ElasticSearch-生命週期管理Elasticsearch
- 對Elasticsearch生命週期的思考Elasticsearch
- Tomcat生命週期管理Tomcat
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- npm scripts的生命週期管理NPM
- Spring生命週期管理之總結Spring
- PLM產品生命週期管理展望
- Flutter - 生命週期監聽和管理Flutter
- 最全面的 Bug 生命週期管理
- ELK日誌保留7天-索引生命週期策略索引
- 生命週期
- akka-typed(1) - actor生命週期管理
- 元件生命週期管理和通訊方案元件
- View生命週期與Activity生命週期的關係View
- vue - 生命週期Vue
- Fragment生命週期Fragment
- vue生命週期Vue
- spring生命週期Spring
- ubuntu生命週期Ubuntu
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- PHP 生命週期PHP
- maven生命週期Maven
- Activity生命週期
- React生命週期React
- React 狀態管理:狀態與生命週期React
- 產品生命週期管理PLM技術研究
- vue 生命週期梳理Vue
- java servlet 生命週期JavaServlet
- Android Activity生命週期Android
- Activity生命週期onDestroy
- React-生命週期React
- IOC與生命週期
- vue 生命週期深入Vue