Elasticsearch rollover API


如果所有數據只存在一個索引下,隨着數據積累,索引體積越來越大。為了方便管理ES索引,盡量將數據分散到多個索引里。在ES5.0以后新增了一個rollover API,可以動態的滾動索引。簡單記錄一下調研與使用情況。

參考鏈接:https://www.elastic.co/guide/en/elasticsearch/reference/6.1/date-math-index-names.html

https://www.elastic.co/blog/managing-time-based-indices-efficiently

https://www.elastic.co/guide/en/elasticsearch/reference/6.1/date-math-index-names.html

一、     通過別名對相關索引統一管理(實現讀寫、操作的可分離):

1、 先設置索引模板(根據index template API):

2、 索引名根據時間工具生成,別名格式:

例:

curl -XPUT 'localhost:9200/%3Ctest%7Bnow%2FD%7D-1%3E'

等同於下面的:

curl -XPUT 'localhost:9200/test20180101

別名:

3、(ES版本5.0以上)通過調用RollOver接口結合時間工具,實現索引的按日期動態滾動。

curl -XPOST 'localhost:9200/in_test/_rollover?pretty' -H 'Content-Type: application/json' -d'

{

  "conditions": {

  "max_age":   "30d",

  "max_docs":  1000000,

  "max_size":  "500gb",

  }

}

'

如果系統中需要按月生成新索引或者當文檔數達到100萬條、索引大小達到500G時生成新索引,可以采用上面的命令。

30d—如果索引創建時間大於等於30天時滾動生效,1000000—1000000條數據,500gb—索引文件大小500GB(max_size參數在5.6.4不支持,推測為6.x版本里的新增的參數)

注:rollover API 有兩種調用方式:

1)、不指定新的索引名字:(這種情況對於索引名字有一定要求,索引名字需要以數字結尾 例如: index_name-1。每次調用rollover API新的索引名字會自動+1)

 

 

2)、指定新的索引名

 4、定時調用rollover API即可。

二、管理index更靈活,效率也比較高(例如要刪除歷史數據,只需將舊index整個刪除即可,比_delete_by_query效率高很多且不會引起沖突)。一般來說這種方式會配合shrink index一起使用,即索引的壓縮。后期補充


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM