ElasticSearch的REST APIs 之 索引的别名(alias)管理

基于 ES 7.7, 官方文档

注意: 7.15版本中调整了分类, 把7.7版本中的Add和Update合并为"Create or Update", 更符合es api的定义

主要内容:

  • Add index alias: 创建或更新别名
  • Delete index alias: 删除索引别名
  • Get index alias: 获取索引别名
  • Index alias exists: 检查索引别名是否存在
  • Update index alias: 添加/删除索引别名

1. Add index alias: 创建或更新索引别名

索引别名, 是一个或多个索引的辅助名称。

大多数 ES api 都接受使用索引别名来代替索引名称。官方文档链接

请求方式

# 支持PUT, POST方式
PUT|POST /<index>/_alias/<alias>

# 用 _aliases 也可以的, 但是我们通常用 _alias, 字母能少写一个是一个
PUT|POST /<index>/_aliases/<alias>

当然也可以使用 `_all`来给当前集群的所有索引添加别名 => 这个有点不正常了
`PUT|POST` /_all/_alias/<alias>

查询参数

master_timeout

  (可选,时间单位)连接到主节点的等待超时时间。如果在超时时间已过之前没有响应, 则返回错误。 默认是值 30s。

timeout

  (可选,时间单位) 等待超时时间。如果在超时时间已过之前没有响应, 则返回错误。 默认是值 30s。

Request body

filter

  (Required, query object) . 筛选查询(Filter query) 用来限制索引别名, 使用该别名时只返回符合过滤条件的文档。(这个应该是有body的时候才是必填的, 没有body就不用填写了)

这个有点像mysql中的view, 同一个table可以建立很多个view, 可以组合不同table的数据, 也可以给不同权限的账号建立不同的view来限制其可以访问的数据

routing

  (Optional, string) 用于将操作路由到特定分片的自定义路由

几个栗子

1. 添加基于时间(time-based)的别名

比如给索引logs_20302801创建一个别名2030:

PUT /logs_20302801/_alias/2030

2. 添加基于用户(user-based)的别名

创建索引users, 它有一个字段user_id, 然后给个别名user_12, 限制user_id=12的文档:

PUT /users
{
  "mappings": {
    "properties": {
      "user_id":{"type": "integer"}
    }
  }
}

# 插入几个文档
POST /users/_doc/10
{
  "user_id": 10
}
POST /users/_doc/11
{
  "user_id": 11
}
POST /users/_doc/12
{
  "user_id": 12
}

# 查询, 能看到所有的文档
GET /users/_search

# 给个别名`user_12`, 限制user_id=12的文档:
PUT /users/_alias/user_12
{
  "routing": "12",
  "filter":{
    "term":{
      "user_id": 12
    }
  }
}

# 查询别名, 只能看到 user_id=12的文档
GET /user_12/_search

官方文档举的这个栗子, 朕觉得不是太合适。maybe用"订单列表" 索引, 然后根据订单状态去建别名更适合

3. 在创建索引时添加别名

建立索引 logs_20302801, 同时添加别名 2030

PUT /logs_20302801
{
    "mappings" : {
        "properties" : {
            "year" : {"type" : "integer"}
        }
    },
    "aliases" : {
        "current_day" : {},
        "2030" : {
            "filter" : {
                &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值