ElasticSearch RollOver索引 - 为什么别名指向多个索引?

时间:2017-05-15 17:37:20

标签: elasticsearch indexing alias rollover

让我们采取以下方案。

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

我是否可以随时继续翻身并使我的别名A1指向最后2个索引,或者通常最后一个' n'指数?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

EDIT 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" } }
    ]
}