《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.11.Index alias(3) https://developer.aliyun.com/article/1230377
参数释意
可选参数,参数类型为string;参数支持单个索引或者以逗号分隔的多个索引再或者通配符表达式形式。_all和*表示对集群中所有索引。
可选参数,参数类型为string;参数支持单个别名或者以逗号分隔的多个别名再或者通配符表达式形式。_all和*表示删除的所有别名。master_timeout与timeout的默认值30s。
bulk 删除
使用bulk的方式,同时为一个索引或者一组索引,移除关联的索引别名;假如已经为test1添加了别名alias1,test2添加了别名alias2,现在需要进行别名移除,可以执行如下四种操作。
# 移除指定索引的指定别名 POST /_aliases { "actions" : [ { "remove": { "index" : "test1", "alias" : "alias1" } }, { "remove": { "index" : "test2", "alias" : "alias2" } } ] } POST /_aliases { "actions" : [ { "remove": { "indices" : ["test1","test2"], "aliases" : ["alias1","alias2"]}} ] } # 移除以test开头的索引的指定别名;使用通配符方式,需要注意影响范围 POST /_aliases { "actions" : [ { "remove": { "index" : "test*", "alias" : "alias1" } }, { "remove": { "index" : "test*", "alias" : "alias2" } } ] } POST /_aliases { "actions" : [ { "remove": { "index" : "test*", "aliases" : ["alias1","alias2"] } } ] }
别名的分类与应用
依据不同的使用场景,我们可以简单把别名分为三类:(1)索引别名(2)过滤别名(3)路由别名。
过滤别名
一种创建同一索引的不同”视图“的简便方法。
通过将过滤条件绑定到对应别名,使用不同别名即获取满足不通条件的数据;使用Query DSL定义过滤器。
使用过滤别名,必须得保证过滤字段存在,因此提前创建好索引,并设定该字段的schema。
如下示例,首先创建一个名为my-index-000001的索引:
PUT /my-index-000001 { "mappings": { "properties": { "user": { "properties": { "id": { "type": "keyword" } } } } } }
再为索引添加上过滤别名,并批量插入三个文档:
#添加过滤别名 POST /_aliases { "actions": [ { "add": { "index": "my-index-000001", "alias": "alias2", "filter": { "term": { "user.id": "kimchy" } } } } ] } #批量插入文档 PUT my-index-000001/_bulk {"index":{}} {"user.id":"kimchy"} {"index":{}} {"user.id":"tom"} {"index":{}} {"user.id":"jerry"}
使用别名执行一个空搜索GET alias2/_search,和预期的一致只返回user.id为kimchy的文档
# 注意:返回内容中省略了与本节无关的内容 { "hits" : { "hits" : [ { "_index" : "my-index-000001", "_type" : "_doc", "_id" : "b_VkIXkB9LctWlE3HOtS", "_score" : 1.0, "_source" : { "user.id" : "kimchy" } } ] } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.11.Index alias(5) https://developer.aliyun.com/article/1230374