ElasticSearch 翻转索引 - 为什么一个别名不能指向多个索引?



让我们采用以下场景。

我有一个指向索引 I1 的别名 A1。现在,我想使用 ES 的翻转功能并创建索引 I2 并使别名指向 I1 和 I2。

我是否总是保持滚动并使我的别名 A1 指向最后 2 个索引或一般的最后"n"个索引?

您可以将一个别名指向多个索引,如下所示:

POST /_aliases
{
    "actions" : [
        { "add" : { "indices" : ["l1", "l2"], "alias" : "A1" } }
    ]
}

甚至将别名指向通配符索引模式,如下所示:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "l*", "alias" : "A1" } }
    ]
}

编辑:使用滚动更新,您只能将别名指向一个索引 - 最新索引。如果你想要一个指向最后 2 个索引、n 个索引或与模式l*匹配的所有索引的别名,你必须使用我上面显示的请求创建一个额外的别名。

编辑 2:如果我想在索引中维护 30 天的日志,这就是我完成它的方式。我始终坚持将索引命名为"l1"和别名为"A1"。前 30 天后,将创建一个名为 l000002 的新索引(命名约定是递增最后一个索引的数量和长度为 6 的零填充(,别名A1将指向索引 l000002。我会创建一个第二个别名来引用您最初想要的"l*"。

PUT /l1
{ "aliases": { "A1": {} } }

POST /A1/_rollover  
{ "conditions": { "max_age": "30d" } }
POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "l*", "alias" : "A2" } }
    ]
}

最新更新