索引别名
- 索引别名API 自动将别名转换为实际索引名称。别名可映射到多个索引,别名可与过滤器关联,该过滤器在搜索和路由值时自动应用。别名不能与索引同名。
- 示例:
-
别名与索引相关联
-
删除别名
-
重命名别名:在同一个API中一个简单的操作后再添加的操作,该操作是原子的,不担心短时间段内 别名没有指向索引
-
将别名与多个索引关联:只需几个添加操作
- 使用索引数组的语法指定关联的多个索引
- 使用glob模式,将别名与多个索引关联
***ps:***该情况下,别名是一个基于时间点指向的别名,对匹配到的索引进行分组,当匹配此模式的新索引被添加或删除,不会自动更新
-
Filtered Aliases,带有过滤器的别名提供了方法创建系统不同索引的视图,可使用Query DSL 定义过滤器,使别用应用于所有的Search 、Count、Delete By Query、 More like This
-
- 创建过滤器别名前,先保证字段在mapping中存在
- 创建过滤器别名前,先保证字段在mapping中存在
-
- 在字段user上创建一个过滤器别名
- 在字段user上创建一个过滤器别名
-
Routing,可将路由值与别名关联,该功能与过滤器别名可一起用,可避免不必要的分片操作
-
- 创建一个执行索引的别名,当别名创建后,所有使用该别名的操作将被自动修改为使用值1 进行路由
- 创建一个执行索引的别名,当别名创建后,所有使用该别名的操作将被自动修改为使用值1 进行路由
-
- 可为查询和索引操作指定不同的路由值
- 可为查询和索引操作指定不同的路由值
-
Write index:
-
- 可将别名指向索引的关联为write index。
-
- 指定后,针对指向多个索引别名的所有索引和更新操作都将尝试解析到一个是write index的索引。
-
- 每次每个别名 只有一个索引被指定为 write index。
-
- 若一个别名引用了多个索引,但write index没指定,该别名不允许写入
-
- 可使用alias 或 index创建的API将别名和索引关联作为write index
-
- 将一个索引设置为write inddex,将影响rollover期间的行为
-
示例:将别名alias5与index06和index07关联,index06作为写入的索引
-
- 新文档被索引到 /alias5/_doc/1就相当于 /index06/_doc/1
- 新文档被索引到 /alias5/_doc/1就相当于 /index06/_doc/1
-
ps:当别名指向的索引没有设置is_write_index:true,且指向的索引只有一个,则该索引就当作write index,直到别名再指向另一个索引
-
[ 1] 添加索引别名
-
- 通过端点方式添加:
PUT /{index}/_alias/{name}
- 通过端点方式添加:
-
{index}:引用的索引,【*、_all、glob pattern 、index_name】
-
{name}:别名
-
{routing}:可选,路由
-
{filter}:可选,过滤器
-
- 示例
-
创建基于时间的别名
PUT /index_201908/_alias/2019
-
创建用户别名
-
- 创建一个index,在mapping中添加user_id字段
- 创建一个index,在mapping中添加user_id字段
-
- 为指定的用户添加别名
- 为指定的用户添加别名
-
[2 ] 在索引创建时指定别名
-
[ 3] 删除别名
-
DELETE /{index}/_alias/{name}
-
[ 4] 检索现有别名
-
GET /{index}/_alias/{name}
-
GET 索引别名API 可按照别名或索引名进行过滤,此API重新定向到master节点去获取所请求的索引别名
-
[5 ] 别名是否存在
-
HEAD 【{index}】/_alias/{name}