序言
随着业务的深入,我们的需求越来越复杂,对应的会带来一些问题.Elasticsearch 的Alias 就是用于解决一些特殊场景的工具Aliascuiyaonan2000@163.com
Elasticsearch别名分为索引别名和字段别名.应用场景我觉得都差不多,如果你熟悉了别名在索引中的应用场景,那字段也就依葫芦画瓢了cuiyaonan2000@163.com
参考资料:
另:
Elasticsearch索引本质上是个虚拟的空间,实际数据存储查询都是由分片完成,通过索引名访问索引本身也是通过索引代理实现,可以这样理解,索引名就是默认的别名.
索引别名
应用场景
如下所示当我们需要对一个索引进行重构,且不影响正常业务的时候,可以使用索引别名,因为别名可以指向多个索引cuiyaonan2000@163.com
如下所示可以使用索引进行业务上的隔离,只不过是针对多个索引的的业务逻辑拆分
如下所以同样也是业务逻辑拆分,只是针对的是同一个索引的不同字段内容(索引创建多了,集群需要管理更多的元数据,消耗更多的管理节点资源,如果索引本身数量不是很大,可以将很多数据合并到一个索引中,对外采用多别名的方式隔离,每个别名仅限其中某些类型的数据访问。)
字段别名
大概同一个意思,只是字段索引同理可以指代不同索引的不同字段.
注意点
- 索引别名只能用于查询,不能用于更新和插入
- 字段别名只能用于查询,不能用于更新和插入.
索引别名操作
给索引创建一个别名
#给指定的索引关联一个别名
PUT cuiyaonan_index/_alias/myalias
获取所有的别名与索引的对应关系
GET _cat/aliases
如上的比较简单知识针对单一索引的增删.如下是删除一个索引别名,同时增加一个索引别名,当然也是可以独立的(可以重复增加remove和add)
POST /_aliases
{
"actions": [
{
"remove": {
"index": "索引名称",
"alias": "索引别名"
}
},
{
"add": {
"index": "索引名称",
"alias": "索引别名"
}
},
{
"add": {
"index": "cuiyaonan_index",
"alias": "566"
}
},
{
"add": {
"index": "cuiyaonan_index",
"alias": "123"
}
}
]
}
根据索引获取对应的别名
GET cuiyaonan_index/_alias
限制别名能查到的数据 ,如下所示: 给索引test1创建别名alias2.同时alias2只能查询到user为cuiyaonan2000@163.com的数据
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "test1",
"alias" : "alias2",
"filter" : { "term" : { "user" : "cuiyaonan2000@163.com" } }
}
}
]
}
字段别名操作
可以看到字段别名其实,就是讲一个字段的类型设置为alias
PUT trips
{
"mappings": {
"_doc": {
"properties": {
"distance": {
"type": "long"
},
"route_length_miles": {
"type": "alias",
"path": "distance"
},
"transit_mode": {
"type": "keyword"
}
}
}
}
}