介绍
顾名思义 就是为索引起一个 外号,一个别名 可以对应 多个索引;一个索引也可以对应多个别名。
场景很多
比如 order_202201,order_202202,order_202203 索引 起个别名 order,这样好处就是 可以关闭历史索引,加快查询数据。
比如 需求变更 导致 索引 mappings 调整,mappings 变更 添加还好,如果 更新 就必须删除索引重来,同步数据 (数据量较大) 耗时,如果删除 索引重建 会导致 上一个版本 服务暂时不可用。这个时候 如果使用 别名 就可以 无感知切换,索引重建到另一个索引上面,索引重建完成后 发布版本完成 在通过别名切换。这样就可以省去 同步 es 时候的 服务不可用问题。
新增
# 方法1
post 192.168.1.139:9200/_aliases
{
"actions":[
{
"add":{
"index":"test1",
"alias":"alias_11"
}
}
]
}
# 方法2
PUT /test1/_alias/alias_11
删除
# 方法1
POST /_aliases
{
"actions": [{
"remove": {
"index": "test1",
"alias": "alias_11"
}
}]
}
# 方法2
DELETE /test1/_alias/alias_11
重命名
POST /_aliases
{
"actions": [{
"remove": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test1",
"alias": "alias_12"
}
}
]
}
多个索引指定同一个别名
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test2",
"alias": "alias_11"
}
}
]
}
同一个索引指定多个别名
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11"
}
},
{
"add": {
"index": "test1",
"alias": "alias_12"
}
}
]
}
查询索引
# 当别名指定了⼀个索引,则查出⼀个索引
GET /alias_11
# 当别名指定了多个索引,则查出多个索引
GET /alias_12
通过别名添加文档
#当别名只指定了⼀个索引,则可以做写的操作
POST /alias_12/_doc/566
{
"title":"标题11",
"type":1
}
# 当别名指定了多个索引,则需要指定写某个索引
POST /_aliases
{
"actions": [{
"add": {
"index": "test1",
"alias": "alias_11",
"is_write_index": true// test1这个索引可以写,设置之后,通过别名写操作,则会写进test1这个索引里
}
},
{
"add": {
"index": "test2",
"alias": "alias_11"
}
}
]
}
查询文档方法都一样,别名和索引都是一样
同一别名的两个索引的字段不一样,但是内容一样,如都包含了‘标题’,则两个索引的数据都可以查出来