如何将elasticsearch别名指向当前索引并从索引模板中从旧索引中删除别名?

时间:2019-09-17 12:30:39

标签: elasticsearch

在我们的应用程序中,我们每天创建Elasticsearch索引,索引模式为index-。 (例如index-17-09-2019)。但是我们的应用程序正在通过指向当前索引的别名访问索引。现在,通过cron作业完成对带有索引的别名的附加和删除。是否可以通过索引模板完成此操作,因为我们避免了cron作业。 我们可以通过索引模板将别名与索引附加在一起,但是我不确定是否可以通过索引模板将别名与旧索引分离,并将其添加到新索引中。

1 个答案:

答案 0 :(得分:0)

这可以通过内置索引生命周期管理(ILM)来完成。您的应用程序将数据发送到索引别名,其余的工作将由ILM负责。

Here是其完成方式的说明,但基本上您需要:

1。创建ILM作业

PUT /_ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "1d"
          }
        }
      }
    }
  }
}

2。创建附加了ILM策略的索引模板

PUT _template/my_template
{
  "index_patterns": ["test-*"], 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "my_policy", 
    "index.lifecycle.rollover_alias": "test-alias" 
  }
}

3。通过创建初始化索引开始该过程

PUT test-000001 
{
  "aliases": {
    "test-alias":{
      "is_write_index": true 
    }
  }
}

这将帮助您无需使用外部CRON作业即可每天处理新索引的创建。您还可以将政策扩展到以后,例如delete old indices after 7 days after rollover

希望有帮助。