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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Elasticsearch Query DSL建立滾動索引(生命週期策略)Elasticsearch索引
- Elasticsearch索引生命週期管理方案Elasticsearch索引
- 12c ILM資料生命週期管理
- ElasticSearch生命週期管理-索引策略配置與操作Elasticsearch索引
- ElasticSearch-生命週期管理Elasticsearch
- 對Elasticsearch生命週期的思考Elasticsearch
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- 團隊管理生命週期
- Tomcat生命週期管理Tomcat
- npm scripts的生命週期管理NPM
- 敏捷應用生命週期管理敏捷
- Flutter - 生命週期監聽和管理Flutter
- 最全面的 Bug 生命週期管理
- 生命週期
- ELK日誌保留7天-索引生命週期策略索引
- akka-typed(1) - actor生命週期管理
- 元件生命週期管理和通訊方案元件
- Java實現生命週期管理機制Java
- 專案管理過程之生命週期 (轉)專案管理
- 固定資產生命週期管理的需求分析
- Spring生命週期管理之總結Spring
- View生命週期與Activity生命週期的關係View
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment
- Activity生命週期
- vue - 生命週期Vue
- React生命週期React
- ubuntu生命週期Ubuntu
- React 生命週期React
- vue生命週期Vue
- 產品生命週期管理PLM技術研究
- React 狀態管理:狀態與生命週期React
- Activity生命週期onDestroy
- Flutter -- Element生命週期Flutter
- Flutter 的生命週期Flutter
- SQL的生命週期SQL