es学习之索引别名

1.es可以对一个或者多个索引指定别名,通过别名可以查到一个或者多个索引的内容。在内部,es会把别名映射到相应的索引上。可以对别名编写过滤器或者路由,在系统中别名不能重复,也不能和索引名重复。es中的别名机制有点像数据库中的视图。
例子:为test1增加一个别名alias1
请求:POST http://127.0.0.1:9200/_aliases
参数:{"actions":[{"add":{"index":"secisland","alias":"alias1"}}] }
删除别名,请求与上述一样,参数不同

{
	"actions":[{"remove":{"index":"test1","alias":"alias1"}}]
}

注意:别名没有修改语法,修改别名时,可以先删除别名,再添加

{
	"actions":[
		{"remove":{"index","test1","alias":"alias1"}},
		{"add":{"index":"test1","alias":"alias2"}}
	]
}

一个别名也可以关联多个索引

{
	"actions":[
		{"add":{"index":"test1","alias":"alias1"}},
		{"add":{"index":"test2","alias":"alias1"}}
	]
}

也可以用以下语法
{ "actions":[ {"add":{"indices":["test1","test2"],"alias":"alias1"}} ] }
或者使用通配符

{
	"actions":[
		{"add":{"index":"test*","alias":"all_test_indecies"}}
	]
}

注意:通配符指定的索引只在当前索引生效,后续添加索引不会被自动添加到别名上。对某一别名做索引的时候,如果该别名添加多个索引就会报错
2.过滤索引别名
通过过滤索引来指定别名提供了对索引查看的不同视图,
该过滤去可以使用查询DSL来定义适用于所有的搜索,计数,查询删除等,以及更多类似这样的与此别名的操作。
创建一个带过滤的别名,首先确保映射中已存在需要过滤的字段:
请求:PUT http://127.0.0.1:9200/test1
参数

{
	"mappings":{
		"type1":{
			"properties":{
				"user':{"type":"string","index","not_analuzed"}
			}
		}
	}
}

创建过滤别名,请求:POST http://127.0.0.1:9200/_aliases
参数:

{
	"actions":[
		{"add":{"index":"test1","alias":"alias1","filter":{
					"term":{"user":"kimchy"}}}}
		}	
	]
}

通过别名也可以和路由关联,此功能可以和过滤别名命令一起使用
请求:POST http://127.0.0.1:9200/_aliases
参数:

{
	"actions":[
		{"add":{"index":"test1","alias":"alias1","routing":"1"}}
	]
}

详细路由知识参考:https://blog.csdn.net/u010454030/article/details/73554652/
同时可以指定搜索路由和查询路由
参数:

{
	"actions":[
		{"add":{"index":"test","alias":"alias2","search_routing":"1,2","index_routing":"2"}}
	]
}

注意:搜索路由可以指定多个值,索引路由只能指定一个值.如果使用路由别名操作的同时还有路由参数,则结果时别名路由和路由的交集

GET http://127.0.0.1:9200/alias2/_search?q=user:kimchy&routing=2,3

通过参数添加别名
请求:PUT /{index}/_alias/{name}
参数:{"routing":"1","filter"}
请求:PUT http://127.0.0.1:9200/secisland

{
	"mappings":{
		"secilog":{
			"properties":{"user_id":{"type":"integer"}}
		}
	}
}

指定别名:
请求:PUT http://127.0.0.1:9200/secisland_alias/user_12

{
	"routing":"12",
	"filter":{
		"term":{"user_id",12}
	}
}

建立索引的同时指定别名
请求:PUT http://127.0.0.1:9200/seciland

{
	"mappings":{
		"type":{
			"properties":{"year":{"type":"integer"}}
		}
	},
	"aliases":{
		"current_day":{},
		"2014":{
			"filter":{"term":{"year":2014}}
		}
	}
}

3.删除别名
DELETE http://{host}:{port}/{index}/_alias/{name}
4.查询现有的别名
可以通过索引名或者别名进行查询
index:索引的名称。部分支持通配符,用逗号分隔也可以指定多个索引名称,还可以使用索引的别名名称
alias:在响应中返回的别名名称
ignore_unavailable:如果一个指定的索引名称不存在该怎么办。如果设置为true,那么这些索引将被忽略
语法:GET http://{host}:{port}/{index}/_alias/{alias}
用HEAD也可以检查别名是否存在,语法和GET类似
HEAD http://127.0.0.1:9200/_alias/2013*

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值