《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.13.Rollover API(1) https://developer.aliyun.com/article/1230209
Rollover的分类
依据不同rollover target和别名情况,可以简单的分为三种执行情况:
别名只绑定一个索引
rollover target为别名,且别名和索引一对一关系;滚动请求过程如下:
1、创建一个新索引
2、给新索引添加别名
3、将别名与之前绑定索引的关联关系移除
别名绑定多个索引
526 > 三、产品能力
rollover target为别名,且与多个索引建立了绑定关系,只有其中一组的绑定关系is_write_index的值为true(如果对is_write_index有疑问,请参看索引别名小节)。在这种情况下,滚动请求过程如下:
1、创建一个新索引
2、新索引于别名的绑定时,将is_write_index设置为true
3、修改别名与旧索引的绑定关系,将is_write_index设置为false
rollover-target 为数据流
rollover target为数据流,滚动请求过程如下:
1、创建一个新索引
2、在数据流上添加新索引作为备份索引和写索引
3、增加数据流的generation属性
实战示例
基础示例
别名与索引是一对一关系,执行 _rollover 之后,别名将关联到新的索引
PUT /logs-1 #备注1 { "aliases": { "logs_write": {} } } # Add > 2 documents to logs-1 PUT logs-1/_bulk {"index":{}} {"user.id":"kimchy"} {"index":{}} {"user.id":"tom"} POST /logs_write/_rollover #备注2 { "conditions": { "max_age": "7d", "max_docs": 2, "max_size": "5gb" } }
创建索引logs-1且与别名logs_write绑定
logs_write指向的索引满足条件集中的任何一个条件(索引“年龄值”>=7天或者主分片文档数目>=2或者主分片 size>=5gb);则logs-000002将会被创建,且别名logs_write将更新绑定到logs-000002。
如上代码块 Rollover API 返回值如下:
{ "acknowledged": true, "shards_acknowledged": true, "old_index": "logs-1", "new_index": "logs-000002", "rolled_over": true, #索引是否执行了滚动 "dry_run": false, # 是否为 dry_run 模式 "conditions": { # 条件集触发结果 "[max_age: 7d]": false, "[max_docs: 2]": true, "[max_size: 5gb]": false, } }
通过查看索引与别名的绑定关系,可以看到logs_write只绑定logs-000002
# 查看命令 GET _cat/aliases/logs_write?v #返回值如下 alias index filter routing.index routing.search is_write_index logs_write logs-000002 - -
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.13.Rollover API(3) https://developer.aliyun.com/article/1230207