0

我是建立适当生命周期政策的新手,所以我希望有人可以帮我解决这个问题。因此,我每周都会创建一个现有索引。这是第三方集成(他们为我提供了传入日志的管道和索引模板)。每周以“name-YYYY-MM-DD”的模式创建日志。我正在尝试为这些索引设置生命周期策略,以便它们从 hot->warm->delete 转换。到目前为止,我已经完成了以下工作:

更新了索引模板以添加策略并设置别名:

{
  "index": {
    "lifecycle": {
      "name": "Cloudflare",
      "rollover_alias": "cloudflare"
    },
    "mapping": {
      "ignore_malformed": "true"
    },
    "number_of_shards": "1",
    "number_of_replicas": "1"

在现有索引上,设置别名以及哪个是“写入”索引:

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "cloudflare-2020-07-13",
                 "alias" : "cloudflare",
                 "is_write_index" : true
            }
        }
    ]
}

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "cloudflare-2020-07-06",
                 "alias" : "cloudflare",
                 "is_write_index" : false
            }
        }
    ]
}

一旦我这样做了,我开始看到以下 2 个错误(每个索引上 1 个):

ILM 错误 #1

ILM 错误 #2

我不确定为什么“不是写索引”错误会出现在旧索引上。也许这是因为它仍然“热”并试图将其移至另一个阶段而不是写入索引?

对于第二个错误,是不是因为索引的名称错误而无法翻转?

我也不清楚这是否是一个很好的翻转方案。这些索引每周都会创建,我认为这没问题。我认为通常您会创建一个索引,并让策略根据您的标准(大小、年龄等)将旧的索引分开。我应该改变这个还是让这个政策适用于现有的每周文件?如果您需要,这里是我导入 ElasticSearch 的管道的一部分,我认为它负责索引命名:

{
        "date_index_name" : {
          "field" : "EdgeStartTimestamp",
          "index_name_prefix" : "cloudflare-",
          "date_rounding" : "w",
          "timezone" : "UTC",
          "date_formats" : [
            "uuuu-MM-dd'T'HH:mm:ssX",
            "uuuu-MM-dd'T'HH:mm:ss.SSSX",
            "yyyy-MM-dd'T'HH:mm:ssZ",
            "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
          ]
        }
      },

所以,对我来说,目前更重要的错误是“number_format_exception”。我想这是由于我在索引中看到的这个设置(provided_name):

{
  "settings": {
    "index": {
      "lifecycle": {
        "name": "Cloudflare",
        "rollover_alias": "cloudflare"
      },
      "mapping": {
        "ignore_malformed": "true"
      },
      "number_of_shards": "1",
      "provided_name": "<cloudflare-{2020-07-20||/w{yyyy-MM-dd|UTC}}>",
      "creation_date": "1595203589799",
      "priority": "100",
      "number_of_replicas": "1",

我相信这个“​​provided_name”是从我上面提供的管道的“date_index_name”中建立起来的。如果这是问题所在,有没有办法通过摄取管道创建一个固定的索引名称而不根据日期进行更改?我宁愿只创建一个固定索引,让生命周期策略处理拆分(即 0001、0002 等)。

我一直在寻找一种方法来创建一个没有“date_index_name”处理器的固定索引名称,但我还没有找到一种方法来做到这一点。或者,如果我可以创建一个带日期的索引名称并添加一个后缀,以允许生命周期策略管理器 (ILM) 在末尾添加增量编号,那也可能会起作用。这里的任何帮助将不胜感激!

4

1 回答 1

1

主要问题是现有索引不以序列号结尾(即 0001、0002 等),因此 ILM 并不真正知道如何进行。

此索引的名称必须与模板的索引模式匹配并以数字结尾

您最好让 ILM 管理索引创建和翻转,因为这正是它应该做的。您需要做的就是继续写入同一个cloudflare别名,仅此而已。无需date_index_name摄取处理器。

所以你的索引模板是正确的。

接下来,您需要引导初始索引

PUT cloudflare-2020-08-11-000001
{
  "aliases": {
    "cloudflare": {
      "is_write_index": true
    }
  }
}

然后,您可以将旧索引重新索引到 ILM 管理的索引中,或者将生命周期策略应用于旧索引。

于 2020-08-11T13:53:03.960 回答