Elasticsearch 别名使用 API、别名使用场景及索引最佳实践

索引别名相关 API

创建别名

将别名 alias1 与索引 test1 相关联的示例:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } }
    ]
}

删除别名

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } }
    ]
}

重命名别名

重命名一个别名是一个简单的删除,然后在同一个 API 中添加操作。 这个操作是原子的,不用担心别名不指向索引的短时间:

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

别名与多索引关联

将一个别名与多个索引关联起来只需要几个添加操作:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}

或者

POST /_aliases
{
    "actions" : [
        { "add" : { "indices" : ["test1", "test2"], "alias" : "alias1" } }
    ]
}

问题来了: 通过别名 alias1 访问索引,那到底是哪个索引呢????

关于别名其他操作, 参考详细 API: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/indices-aliases.html

别名使用场景

索引别名和零停机时间

参考文章为: https://es.xiaoleilu.com/070_Index_Mgmt/55_Aliases.html

索引最佳实践

创建索引时, 暴露给使用方的总是别名名称,方便当索引结构发生变化时,方便 零停机 切换