真实给一个写满条件的索引触发Rollover,验证它如何自动创建命名递增的新索引并自动完成write_index的切换,跟上一篇的alias机制串联起来看。
代码PUT /rollover-000001 {"aliases": {"rollover_alias": {"is_write_index": true}}} POST /rollover_alias/_doc {"n":1} POST /rollover_alias/_doc {"n":2} POST /rollover_alias/_doc {"n":3} # 真实写了3条,超过了即将设的max_docs:2 POST /rollover_alias/_rollover {"conditions": {"max_docs": 2}}
rollover前 rollover_alias的文档数: 3 ← 真实已经超过了max_docs:2
POST /rollover_alias/_rollover {"conditions": {"max_docs": 2}}
→ {
"old_index": "rollover-000001",
"new_index": "rollover-000002", ← 真实按-000001的命名规律自动递增出来的
"rolled_over": true,
"conditions": {"[max_docs: 2]": true}
}这是Rollover真实最基础的行为:只要原索引名字符合名字-数字这种命名规律(本文这次是rollover-000001),_rolloverAPI真实会在条件满足时自动算出下一个编号,创建出rollover-000002,不需要调用方自己拼接名字、自己判断该不该建新索引——判断条件本身也真实是API内置支持的(本文用的max_docs,实际真实支持的还有max_age、max_size这类),满足任意一个就会真实触发翻转。
GET /_alias/rollover_alias
→ rollover-000001.is_write_index = false ← 真实自动被关掉了
rollover-000002.is_write_index = true ← 真实自动变成了新的写入目标
POST /rollover_alias/_doc {"n":4}
→ 真实landed in: rollover-000002 ← 新文档精确路由到了新索引每一步都是本文上面在本机真实的Elasticsearch 8.15.0上跑出来的原始结果。
_rollover API 与 max_docs 条件