CSS服务中如何更新Elasticsearch生命周期策略?
Elasticsearch生命周期实现使用的是Open Distro的ISM。此处简单介绍不涉及ISM template的策略更新步骤,如果要配置有关ISM template的策略可以参考Open Distro文档。
- 当创建一个policy时,系统会往“.opendistro-ism-config”索引中写入一条数据,这条数据的“_id”就是policy的名字,内容是policy的定义。
图1 写入一条数据
- 将policy和索引绑定以后,系统会再往“.opendistro-ism-config”索引中写入一条数据。这条数据的初始状态如下图所示。
图2 数据初始状态
- 执行explain命令,此时返回的内容只有一条policy的id。
GET _opendistro/_ism/explain/data2 { "data2" : { "index.opendistro.index_state_management.policy_id" : "policy1" } }
之后Open Distro会执行一个初始化的流程,将policy的内容填到这条数据中,初始化以后的数据如下图所示。
图3 初始化后数据
初始化结束后,policy中的min_index_age都会被复制过来。
如果此时去更新policy的内容,已经完成初始化流程的索引是完全不感知的,因为他已经将旧的policy的内容复制了一份,更新policy的时候不会去更新复制的那部分内容。
- 修改完policy以后,执行change_policy API完成策略更新,如下所示。
POST _opendistro/_ism/change_policy/data1 { "policy_id": "policy1" }