怎么回事:LFM没有按预期执行?

2022-09-02 10:59:47 浏览数 (1)

目标

通过ILM策略防止单个索引膨胀引发异常。

问题

实际操作时索引没有预期策略精确执行。

  • 长时间没执行:等了好久;
  • 执行不够精准:超过设置文档数量策略;超过size大小策略。
代码语言:json复制
#创建ilm策略
PUT _ilm/policy/datastream_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "5MB",
            "max_age": "1d",
            "max_docs": 1
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
#创建索引模板
PUT _template/datastream_template
{
  "index_patterns": [
    "datastream-*"
  ],
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "index.lifecycle.name": "datastream_policy",
    "index.lifecycle.rollover_alias": "datastream"
  }
}
#初始化索引
PUT datastream-000001
{
  "aliases": {
    "datastream": {
      "is_write_index": true
    }
  }
}
#创建索引
PUT datastream/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "analyzer": "standard"
    }
  }
}
#创建文档
POST /_bulk
{ "index" : { "_index" : "datastream"} }
{"name":"zs1"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs2"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs3"}
{ "index" : { "_index" : "datastream"} }
{"name":"zs4"}

解决

  • 第一个问题:更改索引生命周期管理检查频率(默认10分钟)
代码语言:json复制
PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval": "1m"
  }
}
只有1个索引.png只有1个索引.png
  • 第二个问题:没有精准执行

原因

LFM是定时任务,被时钟触发,像cron到点执行,不是监控实时执行。

代码语言:javascript复制
// 伪代码
Timer:
if(文档总数量>策略设置数量) {
    create index
}
1分钟后创建2个.png1分钟后创建2个.png

0 人点赞