首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch ILM不删除索引

ElasticSearch ILM不删除索引
EN

Stack Overflow用户
提问于 2020-01-22 11:59:32
回答 2查看 7K关注 0票数 7

我已经为我的fluentd.*索引设置了一个简单的ILM策略,在短时间内(为了测试-)将其删除。

ILM:

代码语言:javascript
复制
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": {}
        }
      }
    }
  }
}

索引模板:

代码语言:javascript
复制
PUT _template/fluentd
{
  "order": 0,
  "index_patterns": [
    "fluentd.*"
  ],
  "settings": {
    "index": {
      "lifecycle": {
        "name": "fluentd"
      }
    }
  },
  "aliases": {
    "fluent": {}
  }
}

在这些设置下,我希望ES会删除5-6天以上的索引,但在ES中仍然有3周前的索引。目前,该公司表示,有108个与ILM政策相关的指数。

它到底在做什么,好像什么都没做.如何在x天后删除索引?

我首先尝试使用“索引模板”,但它是无用的,它不对每个索引应用设置(可能是,但只在创建?)。

然后,我手动将ILM放在索引上(另一个错误:您不能选择所有索引并点击"add策略“--您需要一个接一个地添加策略),这需要我点击大约600次。

现在的问题是,我定义了“热”阶段,但它没有触发(因为热阶段没有触发(我设置为“创建索引后1天后的滚转”)删除阶段也没有触发。当我删除热阶段,并应用ILM索引再次仅删除-它的工作!但是添加和删除所有这些都是错误的,我得到了Ooops,有些地方出错了。

我不明白为什么当我更改ILM策略时,我必须删除ILM并将它重新应用于每个索引。是1000%不方便。

ES确实需要投入一些工作,它仍然太beta了,我得到了大量的状态代码500,尽管我直接在Elastic上使用最近的版本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-09 15:42:08

在这些设置下,我希望ES会删除5-6天以上的索引,但在ES中仍然有3周前的索引。目前,该公司表示,有108个与ILM政策相关的指数。

使用您的设置,删除阶段从滚转开始,从4天开始。如果您想从“索引创建”开始删除阶段4天,则需要从热阶段删除滚动操作:

代码语言:javascript
复制
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "4d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

我首先尝试使用“索引模板”,但它是无用的,它不对每个索引应用设置(可能是,但只在创建?)。

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

然后,我手动将ILM放在索引上(另一个错误:您不能选择所有索引并点击"add策略“--您需要一个接一个地添加策略),这需要我点击大约600次。

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

代码语言:javascript
复制
PUT fluentd.*/_settings
{
  "index": {
    "lifecycle": {
      "name": "fluentd"
    }
  }
}

现在的问题是,我定义了“热”阶段,但它没有触发(因为热阶段没有触发(我设置为“创建索引后1天后的滚转”)删除阶段也没有触发。当我删除热阶段,并应用ILM索引再次仅删除-它的工作!但是添加和删除所有这些都是错误的,我得到了Ooops,有些地方出错了。

如果不触发滚转阶段,则ILM将无法进行。

我不明白为什么当我更改ILM策略时,我必须删除ILM并将它重新应用于每个索引。是1000%不方便。

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

票数 8
EN

Stack Overflow用户

发布于 2021-08-10 14:18:11

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

另一个原因可能是因为提到了这里

ILM实际上并不打算用于1m生命周期。我不相信你会达到你想要的行为。我的理解是,ILM是一个机会主义的背景任务,它不是先发制人的,所以它不会在确切的时间框架内执行。 它的设计是按小时或天的顺序工作,而不是分钟。

我的索引也有相同的情况,我检查了一下--索引被删除了,但后来我把它们放在了上面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59859306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档