非法参数异常:index.lifecycle.rollover_alias [metricbeat-6.8.4-alias] 不指向索引 [metricbeat-6.8.4-2020.02.24]

Yog*_*rie 4 elasticsearch logstash kibana metricbeat

目前正在寻找有关设置 ilm 的帮助,我已经设置了模板、索引别名和策略,如下所示

PUT metricbeat-6.8.4-alias-000001
{
  "aliases": {
    "metricbeat-6.8.4-alias": {
      "is_write_index": true
    }
  }
}

PUT _template/metricbeat-6.8.4-alias
{
  "index_patterns": ["metricbeat-6.8.4-*"],                 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "Delete_Index",      
    "index.lifecycle.rollover_alias": "metricbeat-6.8.4-alias"    
  }
}
Run Code Online (Sandbox Code Playgroud)

但仍然出现如下错误

illegal_argument_exception: index.lifecycle.rollover_alias [metricbeat-6.8.4-alias] does not point to index [metricbeat-6.8.4-2020.02.24]
Run Code Online (Sandbox Code Playgroud)

寻求帮助我如何正确设置 ilm ?谢谢

L.q*_*ter 6

使用生命周期策略创建别名是一个 3 步过程。

Elastic 提供了很棒的教程

简而言之:

  1. 创建定义适当阶段和操作的生命周期策略。
  2. 创建索引模板以将策略应用于每个新索引。
  3. 引导索引作为初始写入索引。

我认为您是在创建第一个索引后创建模板。您应该首先创建 ilm,然后是您指定要用于索引的 ilm 策略的模板,最后创建第一个索引(引导程序)。

代码示例:

var indexName = "index_name";
var indexPattern = $"{indexName}-*";
var aliasName = $"{indexName}-alias";
var policyName = $"{indexName}-policy";
var firstIndexName = $"{indexName}-000001";

PUT _ilm/policy/index_name-policy
{
    "policy": {
        "phases": {
            "hot": {
                "actions": {
                    "rollover": {
                        "max_size": "5gb",
                        "max_docs": 10000,
                        "max_age":"2d"
                    }
                }
            },
            "warm": {
                "min_age": "5d",
                "actions": {
                }
            },
            "delete": {
                "min_age": "10d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}

PUT _template/index_name-template
{
    "index_patterns": ["{{.IndexPattern}}"],
    "settings": {
        "index.number_of_shards": "1",
        "index.number_of_replicas": "1",
        "index.lifecycle.name": "{{.PolicyName}}", 
        "index.lifecycle.rollover_alias": "{{.AliasName}}" 
    },
    "mappings": {
         "_source": {
            "enabled": true
         },
         "properties": {
            {{Properties}}
        }
    }
}

PUT index_name-000001
{
   "aliases": {
        "{{.AliasName}}":{
            "is_write_index": true 
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

  • 天啊,这真是糟糕的用户体验 (4认同)
  • 为什么这不能从 UI 完成并且必须作为单独的 REST 调用运行? (3认同)