在我们的应用程序中,我们每天都在创建elasticsearch索引,索引模式是index-。(例如index-17-09-2019)。但是我们的应用程序通过指向当前索引的别名访问索引。现在附加和删除带有索引的别名是通过cron作业完成的。是否可以通过索引模板来完成,因为我们避免了cron作业。我们可以通过索引模板将别名附加到索引中,但我不确定我们是否可以分离带有旧索引的别名并通过索引模板将其添加到新索引中。
这可以通过内置的索引生命周期管理(ILM)来完成。您的应用程序将向索引别名发送数据,ILM将负责其余的工作。
以下是如何完成的描述,但基本上你需要:
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.通过创建init索引启动流程
PUT test-000001
{
"aliases": {
"test-alias":{
"is_write_index": true
}
}
}
这将帮助您在没有外部CRON作业的情况下每天处理新索引的创建。您还可以扩展您的策略,稍后以例如翻转后7天后删除旧索引。
希望有帮助。