1、es有一个生命周期策略的概念,它最基本的应用就是delete,可以定时删除指指定索引。

1.1新增策略

PUT _ilm/policy/111_policy
{
  "policy": {
    "phases": {
      "delete": {
        "min_age": "30s",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

1.2查询当前es的全部生命周期策略

红框标出的是其中一个设置索引存活30秒的策略,策略名为111_policy

GET _ilm/policy

1.3将索引与需要配置的策略绑定

在这里我们新增一个基本索引test_111

PUT test_111
{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1
    }
}

为test_111设置此策略

PUT test_111/_settings
{
    "index": {
        "lifecycle": {
            "name": "111_policy"
        }
    }
}

1.4查看当前索引状态

GET /test_111/_ilm/explain

设置策略前

设置后,能看到多了很多指标,其中age便是此索引创建的时间 

 1.5生命周期策略的检查时间和状态

生命周期策略的开启、关闭和状态

GET _ilm/status

POST _ilm/stop

POST _ilm/start

生命周期的检查时间

想要真正运用生命周期策略,它并不是配置完立刻执行的,而是要每隔固定的时间(检查时间)扫描一遍,在扫描时发现某个索引创建时间已经超过生命周期策略配置的时间,便执行删除索引操作。

如下命令可自定义设置检查时间。

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "30s"
  }
}

注:

在这里我理解生命周期策略就相当于es内置的一个定时任务,比如delete的策略就是定时执行删除索引的语句;

这里定时对应的是lifecycle.poll_interval

delete对应的是语句:DELETE test_111

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐