Elasticsearch别名未指向滚动策略创建的新索引



弹性搜索:7.15.2

我们有一个以这种方式创建的别名:

POST _aliases
{
"actions": [
{
"add": {
"index": "my-index-*",
"alias": "my-alias",
"is_write_index": false
}
}
]
}

如果我得到别名信息,我可以看到

GET _alias/my-alias
{
"my-index-2021.11.30-000001" : {
"aliases" : {
"my-alias" : { }
}
}
}

然而,还有另一个索引是由滚动策略自动创建的:my-index-2021.11.30-000002,但该索引不是由my-alias之前创建的别名指向的

如果我用相同的索引模式从头开始创建一个新的别名,我可以同时看到:

POST _aliases
{
"actions": [
{
"add": {
"index": "my-index-*",
"alias": "my-alias-2",
"is_write_index": false
}
}
]
}
GET _alias/my-alias-2
{
"my-index-2021.11.30-000001" : {
"aliases" : {
"my-alias-2" : { }
}
},
"my-index-2021.11.30-000002" : {
"aliases" : {
"my-alias-2" : { }
}
}
}

有什么东西我遗漏了吗?我希望在没有任何手动操作的情况下也能看到别名我的别名所指向的*-000002索引。

滚动策略只是创建一个新的索引,如果索引大小大于X GBs

或者可能我必须修改索引模板以便添加";读取";自动别名?我已经在模板中指定了别名,但这是滚动策略的写入别名(由于我们的自定义弹性搜索配置,我不能用于搜索(

{
"index": {
"lifecycle": {
"rollover_alias": "my-write-alias"
}
}
}

使用POST _aliases创建别名时,它只会在当前存在的匹配索引上创建别名,但如果以后创建了符合条件的新索引,则不会将别名添加到该索引中。

你需要做的是:

  1. 创建一个包含别名定义的索引模板
  2. 将滚动策略分配给模板索引设置(即index.lifecycle.nameindex.lifecycle.rollover_alias设置(

基本上,像这样:

PUT _index_template/my_index_template
{
"index_patterns": ["my-index-*"],                 
"template": {
"alias": {
"my-alias": {}
},
"mappings": {
...
},
"settings": {
"index.lifecycle.name": "my_policy",      
"index.lifecycle.rollover_alias": "my_write_alias"    
}
}
}

设置后,每次生命周期策略创建新索引my-index-2021.MM.dd-000xyz时,my-alias都会指向该新索引。同样值得注意的是,my_write_alias将始终指向序列的最新索引,即写索引。

相关内容

  • 没有找到相关文章

最新更新