创建或更新索引别名 API
创建或更新索引别名。
索引别名是一个或多个索引的第二个名字。大多数 Elasticsearch API 都支持索引别名代替索引名称。
PUT /my-index-000001/_alias/alias1
请求
PUT /<index>/_alias/<alias>
POST /<index>/_alias/<alias>
PUT /<index>/_aliases/<alias>
POST /<index>/_aliases/<alias>
前置条件
- 如果 Elasticsearch 安全特性启用,你对所有索引和索引别名必须有
manage
索引权限。
路径参数
<index>
(必需的,字符串)待添加别名的,逗号分隔列表或通配符的索引名。
为了向集群中的所有索引添加别名,使用值 _all
。
提示
你不能给数据流添加索引别名。
<alias>
(必需的,字符串)待创建或升级的索引别名的名字。支持日期数学。
查询参数
master_timeout
(可选,时间单位)等待连接到主节点的时间。如果在超时过期前没有收到响应,则请求失败并返回错误。默认为 30s
。
timeout
(可选,时间单位)等待响应的时间。如果在超时过期之前没有收到响应,则请求失败并返回错误。默认为 30s
。
请求体
filter
(可选,查询对象)过滤器查询用于限制索引别名。 如果指定,索引别名仅用于过滤器返回的文档。
routing
(可选,字符串)用于路由操作到指定分片的自定义值。
示例
索引别名支持日期数学。
添加一个基于时间的别名
以下的请求为索引 logs_20302801
创建一个别名 2030
。
PUT /logs_20302801/_alias/2030
添加一个基于用户的别名
首先,创建一个带有 user_id
字段映射的索引 users
:
PUT /users
{
"mappings" : {
"properties" : {
"user_id" : {"type" : "integer"}
}
}
}
接着,为特定用户 user_12
添加索引别名:
PUT /users/_alias/user_12
{
"routing" : "12",
"filter" : {
"term" : {
"user_id" : 12
}
}
}
在索引创建时添加一个别名
你可以使用创建索引 API在索引创建时添加一个索引别名。
PUT /logs_20302801
{
"mappings": {
"properties": {
"year": { "type": "integer" }
}
},
"aliases": {
"current_day": {},
"2030": {
"filter": {
"term": { "year": 2030 }
}
}
}
}
创建索引 API 在索引别名的名字中也支持日期数学。