滾動索引
ps:
- 當現有的索引太大、太老時,rollover索引的API將別名滾動到新的索引。
- 滾動索引API 接受單個別名、條件列表
- 別名必須指向一個write index ,保證滾動請求有效
- 不同實現方式,元數據用不同方式被更新
場景1
- 別名僅指向一個索引,is_write_index不配置
- 原始索引的別名滾動到新索引,並從原始索引中移除(滾動)
場景2
- 別名指向多個索引,其中一個索引設置is_write_index:true,用於滾動
- write index 將參數設置爲false,新創建索引將滾動別名指向自己,將參數設爲true
示例
-
創建索引index-001,別名爲index_alias1
-
添加滾動索引,若index_alias1指向的始索引7天或7天前創建,或包含1000以上的文檔,或索引大小至少5GB,則創建index-002並更新index_alias1指向index-002
命名新索引 -
POST /{old_alias}/_rollover/{new_alias}
日期數學與rollover API結合使用
- 根據索引滾動的日期來命名索引
- rollover API支持日期數學,但要求索引名稱和短劃線和數字結尾,ex:index-0001,每次滾動索引都會遞增
PUT /<log-{now/d}-1
創建當天日期命名的索引
定義新索引
- 新索引中的settings、mappings、aliases可取自任何匹配的索引模板,可在請求body中設定settings、mappings、aliases,將覆蓋模板中的原有值
Dry run - rollover API支持dry_run模式,可在不執行任何實際滾動的情況下,檢查請求條件
Wait For Active Shards
- 滾動操作會創建一個新的索引用於滾動,索引創建時的設置 wait_for_active_shards 可適用於滾動操作
Write Index Alias Behavior
- 滾動一個設置is_write_index:true的索引,在滾動操作期間,滾動操作不會交換這個設置
- 滾動一個指向多個索引的別名無效
新索引、老索引、索引別名均可執行寫操作,但通過索引別名執行寫操作,實際上是寫入到is_write_index:true的索引