Elastic Search 索引别名(alias)

作用

在elasticsearch里面给index起一个aliases(别名)能非常优雅的解决 两个索引无缝切换 的问题,这个功能在某些场景下非常使用。

应用场景一

比如电商的核心商品索引库,除了实时增量数据外,每天都要重建一遍索引,避免index里面的数据和db里面的数据不一致

应用场景二

不停机重建索引-修改映射类型

准备:创建映射

PUT /blog_v1
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      },
      "like": {
        "type": "integer"
      },
      "date": {
        "type": "date"
      }
    }
  }
}

执行结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "blog_v1"
}

创建别名 - 单个别名操作

给该索引创建别名 blog

PUT /blog_v1/_alias/blog

执行结果:

{
  "acknowledged" : true
}

创建别名 - 原子的执行多个别名操作

删除原索引的别名,并添加新索引的别名,别名相同,如下图:

提示:这里只是说明api用法,详见:不停机重建索引-修改映射类型

POST /_aliases
{
  "actions": [
    {
      "remove": {        //移除一个索引的别名
        "index": "blog_v1",
        "alias": "blog"
      }
    },
    {
      "add": {        //增加另一个索引的别名
        "index": "blog_v2",
        "alias": "blog"
      }
    }
  ]
}

查询索引拥有的别名

GET /blog_v1/_alias/*

执行结果:

{
  "blog_v1" : {
    "aliases" : {
      "myblog" : { }    //别名
    }
  }
}

原文出处:/show_1IX1oupWnDQl.html