版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
滚动索引
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的索引