“filter” : {
“term” : {“user” : “kimchy” }
},
“routing” : “kimchy”
}
}
}
2、Filtered Aliases
带有过滤器的别名提供了创建相同索引的不同“视图”的简单方法。过滤器可以使用查询DSL定义,并应用于所有搜索、计数、按查询删除以及类似于此别名的操作。
其使用示例如下,假设存储该索引:
PUT /test1
{
“mappings”: {
“_doc”: {
“properties”: {
“user” : {
“type”: “keyword”
}
}
}
}
}
为别名设置过滤器的使用方法如下:
POST /_aliases
{
“actions” : [
{
“add” : {
“index” : “China_Provice_Index”,
“alias” : “shanghai_index”,
“filter” : { “term” : { “provice” : “shanghai” } }
},
“add” : {
“index” : “China_Provice_Index”,
“alias” : “guangzhou_index”,
“filter” : { “term” : { “provice” : “guangzhou” } }
}
}
]
}
通过为China_Provice_Index(中国各省份人才数据库索引)创建别名,shanghai_index、guangzhou_index,这样从两个别名进行数据查询,只会查出各自省份的数据,是不是有点类似于”多租户“,也即通过索引别名并指定过滤器,能为同一个索引提供不同的视图。
3、Routing
在创建别名时可以指定路由值。
POST /_aliases
{
“actions” : [
{
“add” : {
“index” : “test”,
“alias” : “alias1”,
“routing” : “1”
}
}
]
}
使用别名alias1查询内容时,会自动使用该值进行路由。
也可以通过search_routing、index_routing分别来指定查询、索引时的路由值,注意,index_routing只能指定一个值。
4、Write Index
如果一个别名只映射了一个真实索引,则可以使用别名进行index api(即索引文档,写文档),但如果一个别名同一时间映射了多个索引,默认是不能直接使用别名进行索引文档,因为ES不知道文档该发往哪个索引。
可以使用is_write_index属性为一个别名下的其中一个索引指定为写索引,此时则可以直接使用别名进行index api的调用。
例如:
POST /_aliases
{
“actions” : [
{
“add” : {
“index” : “test”,
“alias” : “alias1”,
“is_write_index” : true
}
},
{
“add” : {
“index” : “test2”,
“alias” : “alias1”
}
}
]
}
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
[外链图片转存中…(img-kDnOJ1ok-1716573737138)]