弹性搜索: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
创建别名时,它只会在当前存在的匹配索引上创建别名,但如果以后创建了符合条件的新索引,则不会将别名添加到该索引中。
你需要做的是:
- 创建一个包含别名定义的索引模板
- 将滚动策略分配给模板索引设置(即
index.lifecycle.name
和index.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
将始终指向序列的最新索引,即写索引。