微信公众号:[中间件兴趣圈]
作者简介:《RocketMQ技术内幕》作者;
index aliases,索引别名,有点类似名称映射,一个索引别名可以映射多个真实索引,索引别名在定义时还支持filter,构成同一个索引,不同的视图。
思考:一个索引别名可以映射成多个索引,那如果向一个别名添加一个文档时,会在该别名下对应的所有索引下都创建一个文档?
如何创建索引别名
1POST /_aliases2{3 "actions" : [4 { "remove" : { "index" : "test1", "alias" : "alias1" } },5 { "add" : { "index" : "test2", "alias" : "alias1" } }6 ]7}
索引创建API,支持add、remove操作,当前Restfull java客户端未封装该方法。
为索引创建别名,也可以在创建索引API中指定:
1PUT test 2{ 3 "aliases" : { 4 "alias_1" : {}, 5 "alias_2" : { 6 "filter" : { 7 "term" : {"user" : "kimchy" } 8 }, 9 "routing" : "kimchy"10 }11 }12}
Filtered Aliases
带有过滤器的别名提供了创建相同索引的不同“视图”的简单方法。过滤器可以使用查询DSL定义,并应用于所有搜索、计数、按查询删除以及类似于此别名的操作。
其使用示例如下,假设存储该索引:
1PUT /test1 2{ 3 "mappings": { 4 "_doc": { 5 "properties": { 6 "user" : { 7 "type": "keyword" 8 } 9 }10 }11 }12}
为别名设置过滤器的使用方法如下:
1POST /_aliases 2{ 3 "actions" : [ 4 { 5 "add" : { 6 "index" : "China_Provice_Index", 7 "alias" : "shanghai_index", 8 "filter" : { "term" : { "provice" : "shanghai" } } 9 },10 "add" : {11 "index" : "China_Provice_Index",12 "alias" : "guangzhou_index",13 "filter" : { "term" : { "provice" : "guangzhou" } }14 }15 }16 ]17}
通过为China_Provice_Index(中国各省份人才数据库索引)创建别名,shanghai_index、guangzhou_index,这样从两个别名进行数据查询,只会查出各自省份的数据,是不是有点类似于”多租户“,也即通过索引别名并指定过滤器,能为同一个索引提供不同的视图。
Routing
在创建别名时可以指定路由值。
1POST /_aliases 2{ 3 "actions" : [ 4 { 5 "add" : { 6 "index" : "test", 7 "alias" : "alias1", 8 "routing" : "1" 9 }10 }11 ]12}
使用别名alias1查询内容时,会自动使用该值进行路由。
也可以使用search_routing、index_routing分别来指定查询、索引时的路由值,注意,index_routing只能指定一个值。
Write Index
如果一个别名只映射了一个真实索引,则可以使用别名进行index api(即索引文档,写文档),但如果一个别名同一时间映射了多个索引,默认是不能直接使用别名进行索引文档,因为ES不知道文档该发往哪个索引。
可以使用is_write_index属性为一个别名下的其中一个索引指定为写索引,此时则可以直接使用别名进行index api的调用。例如:
1POST /_aliases 2{ 3 "actions" : [ 4 { 5 "add" : { 6 "index" : "test", 7 "alias" : "alias1", 8 "is_write_index" : true 9 }10 },11 {12 "add" : {13 "index" : "test2",14 "alias" : "alias1"15 }16 }17 ]18}
es index aliases,索引别名就介绍到这里了。
更多文章请关注中间件兴趣圈:
作者新书《RocketMQ技术内幕》已成功上市。
《RocketMQ技术内幕》已出版上市,目前可在主流购物平台(京东、天猫等)购买,本书从源码角度深度分析了RocketMQ NameServer、消息发送、消息存储、消息消费、消息过滤、主从同步HA、事务消息;在实战篇重点介绍了RocketMQ运维管理界面与当前支持的39个运维命令;并在附录部分罗列了RocketMQ几乎所有的配置参数。本书得到了RocketMQ创始人、阿里巴巴Messaging开源技术负责人、Linux OpenMessaging 主席的高度认可并作序推荐。目前是国内第一本成体系剖析RocketMQ的书籍。
本文分享自微信公众号 - 中间件兴趣圈(dingwpmz_zjj)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。