【问题标题】:ElasticSearch ILM not deleting indicesElasticSearch ILM 不删除索引
【发布时间】:2020-05-08 14:07:48
【问题描述】:

我已对我的 fluentd.* 索引设置了一个简单的 ILM 策略,以便在(用于测试 - )短时间内删除。

工业光魔:

PUT _ilm/policy/fluentd
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_age": "1d",
            "max_size": "1gb"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "4d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

索引模板:

PUT _template/fluentd
{
  "order": 0,
  "index_patterns": [
    "fluentd.*"
  ],
  "settings": {
    "index": {
      "lifecycle": {
        "name": "fluentd"
      }
    }
  },
  "aliases": {
    "fluent": {}
  }
}

通过这些设置,我预计 ES 会删除 5-6 天之前的索引,但 ES 中仍有 3 周前的索引。目前,它表示该 ILM 政策有 108 个链接索引。

它实际上在做什么,它似乎根本没有做任何事情......如何在 x 天后删除索引?

我首先尝试使用“索引模板”,但它没用,它不会将设置应用于每个索引(可能是但仅在创建时????)。

然后我手动将 ILM 放在索引上(另一个错误:您无法选择所有索引并点击“添加 ILM 策略”-您需要逐个添加策略)这需要我单击大约 600 次.

现在的问题是,我定义了“热”阶段但它没有触发(它有问题?) - 因为热阶段没有触发(我设置为“创建索引后 1 天后翻转”) - 删除阶段也没有。当我删除热阶段并将 ILM 再次应用于索引时,仅删除 - 它起作用了!但是添加和删除所有这些都是错误的,我得到了糟糕,这里和那里出了点问题。

我不明白为什么当我更改 ILM 策略中的某些内容时,我必须删除 ILM 并将其重新应用到每个索引。 1000% 不方便。

ES 确实需要做一些工作,它仍然是测试版,我得到了很多状态码 500,尽管我直接在 Elastic Cloud 上使用最新版本。

【问题讨论】:

  • 我认为您需要将策略应用于索引,请查看this
  • @ᴀʀᴍᴀɴ 将 ILM 应用于索引和将 ILM 链接到索引有什么区别?因为它们已经关联(Kibana 正在确认这一点)。
  • 将 ILM 链接到索引是什么意思?您能在这里分享一下您是如何将此政策应用于索引fluentd.* 的吗?
  • 更新问题并添加最后一条评论以供其他用户查看您到目前为止所做的工作。
  • @ᴀʀᴍᴀɴ 我将删除阶段设置为 14 天,但它也删除了 5 天前创建的索引。我想我设置了一个 cronjob 来删除旧数据,这个 ILM sh*t 太错误了。

标签: elasticsearch elasticsearch-indices elastic-cloud


【解决方案1】:

通过这些设置,我预计 ES 会删除 5-6 天之前的索引,但 ES 中仍有 3 周前的索引。目前,它表示该 ILM 政策有 108 个链接索引。

根据您的设置,删除阶段从 翻转 后的 4 天开始。如果您想在“索引创建”的第 4 天开始删除阶段,您需要从热阶段中删除翻转操作:

{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "4d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

我首先尝试使用“索引模板”,但它没用,它不会将设置应用于每个索引(可能是但仅在创建时????)。

是的,它适用于创建索引。

然后我手动将 ILM 放在索引上(另一个错误:您无法选择所有索引并点击“添加 ILM 策略”-您需要逐个添加策略)这需要我单击大约 600 次.

Kibana 不允许您将 ILM 策略应用于所有索引,但 elasticsearch API 允许! 只需打开一个 kibana 开发工具并运行以下请求:

PUT fluentd.*/_settings
{
  "index": {
    "lifecycle": {
      "name": "fluentd"
    }
  }
}

现在的问题是,我定义了“热”阶段但它没有触发(它有问题?) - 因为热阶段没有触发(我设置为“创建索引后 1 天后翻转”) - 删除阶段也没有。当我删除热阶段并将 ILM 再次应用于索引时,仅删除 - 它起作用了!但是添加和删除所有这些都是错误的,我得到了糟糕,这里和那里出了点问题。

如果未触发翻转阶段,则 ILM 无法进行。

我不明白为什么当我更改 ILM 策略中的某些内容时,我必须删除 ILM 并将其重新应用到每个索引。 1000% 不方便。

因为 ILM 定义缓存在每个索引上。 见文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-index-lifecycle.html#ilm-phase-execution

【讨论】:

    【解决方案2】:

    有点晚了,但也许它会对某人有所帮助。

    另一个原因可能是here提到的:

    ILM 并不是真正打算用于 1m 生命周期。我不 相信你会实现你想要的行为。我的理解是 ILM 是一个机会主义的后台任务,它不是抢先的,所以 它不会在确切的时间范围内执行。

    它被设计为按小时或天的顺序工作,而不是几分钟。

    我的索引也有同样的情况,我检查了 - 索引被删除了,但比我坐起来要晚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      相关资源
      最近更新 更多