Elasticsearch之aliases
aliases的作用
索引别名可以指向一个或多个索引,允许我们做如下操作:
- 在运行的集群中可以无缝的从一个索引切换到另一个索引
- 可以给多个索引分组
- 可以与路由搭配使用
准备数据
# 创建索引p1
PUT p1/_doc/1
{
"title":"周一"
}
# 创建索引p2
PUT p2/_doc/1
{
"title":"周二"
}
# 创建索引p3
PUT p3/_doc/1
{
"title":"周三"
}
# 创建索引p4
PUT p4/_doc/1
{
"title":"周四"
}
创建别名
# 创建别名
POST /_aliases
{
"actions": [
{
"add": {
"index": "p1",
"alias": "a1"
}
}
]
}
端点添加别名形式
PUT /{index}/_alias/{name}
* index,要为哪个索引添加别名
* name,别名的名称
实例:
PUT /p3/_alias/a3
查看别名
GET p1,p3/_alias
# result
{
"p1": {
"aliases": {
"a1": {}
}
},
"p3": {
"aliases": {
"a3": {}
}
}
}
删除别名
POST /_aliases
{
"actions": [
{
"remove": {
"index": "p1",
"alias": "a1"
}
}
]
}
或端点删除形式
DELETE /p3/_alias/a3
检测某个索引是否存在
HEAD /_alias/{别名}
HEAD以状态码的形式返回是别名是否存在,200 - OK是存在,404 - Not Found是不存在
HEAD /_alias/a1
# result
404 - Not Found
HEAD /_alias/a3
# result
200 - OK
检索索引
# 查询指定索引
GET /{index}/_alias/{alias}
# 查询索引p1指向以a开头的所有别名
GET p1/_alias/a*
# 查询索引p1所有的别名
GET p1/_alias/*
# 查询所有别名是a开头的索引
GET /_alias/a*
重命名索引
重命名别名是一个简单的remove
操作,然后执行add
操作,无需担心短时间内别名不指向索引,因为这个操作原子性的:
POST /_aliases
{
"actions": [
{
"remove":{
"index": "p1",
"alias": "a1"
}
},
{
"add": {
"index": "p1",
"alias": "a_1"
}
}
]
}
为多个索引指向别名
POST /_aliases
{
"actions":[
{"add":{"index":"p1","alias":"a1"}},
{"add":{"index":"p2","alias":"a1"}}
]
}
也可以使用indices
数组语法在一个操作中为多个索引指向同一个别名
POST /_aliases
{
"actions": [
{"add": {"indices": ["p1", "p2"], "alias": "a2"}}
]
}
也可以为一个索引指向多个别名
POST /_aliases
{
"actions": [
{"add": {"index": "p1", "aliases": ["a21", "a22", "a23"]}}
]
}