创建或更新索引别名 API

创建或更新索引别名。

索引别名是一个或多个索引的第二个名字。大多数 Elasticsearch API 都支持索引别名代替索引名称。

  1. 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

  1. PUT /logs_20302801/_alias/2030

添加一个基于用户的别名

首先,创建一个带有 user_id 字段映射的索引 users

  1. PUT /users
  2. {
  3. "mappings" : {
  4. "properties" : {
  5. "user_id" : {"type" : "integer"}
  6. }
  7. }
  8. }

接着,为特定用户 user_12 添加索引别名:

  1. PUT /users/_alias/user_12
  2. {
  3. "routing" : "12",
  4. "filter" : {
  5. "term" : {
  6. "user_id" : 12
  7. }
  8. }
  9. }

在索引创建时添加一个别名

你可以使用创建索引 API在索引创建时添加一个索引别名。

  1. PUT /logs_20302801
  2. {
  3. "mappings": {
  4. "properties": {
  5. "year": { "type": "integer" }
  6. }
  7. },
  8. "aliases": {
  9. "current_day": {},
  10. "2030": {
  11. "filter": {
  12. "term": { "year": 2030 }
  13. }
  14. }
  15. }
  16. }

创建索引 API 在索引别名的名字中也支持日期数学

原文链接