序言

随着业务的深入,我们的需求越来越复杂,对应的会带来一些问题.Elasticsearch 的Alias 就是用于解决一些特殊场景的工具Aliascuiyaonan2000@163.com

Elasticsearch别名分为索引别名和字段别名.应用场景我觉得都差不多,如果你熟悉了别名在索引中的应用场景,那字段也就依葫芦画瓢了cuiyaonan2000@163.com

参考资料:

  1. https://baijiahao.baidu.com/s?id=1667202756950040116&wfr=spider&for=pc

另:

Elasticsearch索引本质上是个虚拟的空间,实际数据存储查询都是由分片完成,通过索引名访问索引本身也是通过索引代理实现,可以这样理解,索引名就是默认的别名.

索引别名

应用场景

如下所示当我们需要对一个索引进行重构,且不影响正常业务的时候,可以使用索引别名,因为别名可以指向多个索引cuiyaonan2000@163.com 

es 别名索引查询 es索引别名的使用场景_字段

如下所示可以使用索引进行业务上的隔离,只不过是针对多个索引的的业务逻辑拆分

es 别名索引查询 es索引别名的使用场景_Elastic_02

如下所以同样也是业务逻辑拆分,只是针对的是同一个索引的不同字段内容(索引创建多了,集群需要管理更多的元数据,消耗更多的管理节点资源,如果索引本身数量不是很大,可以将很多数据合并到一个索引中,对外采用多别名的方式隔离,每个别名仅限其中某些类型的数据访问。)

es 别名索引查询 es索引别名的使用场景_应用场景_03

字段别名

大概同一个意思,只是字段索引同理可以指代不同索引的不同字段.

注意点

  1. 索引别名只能用于查询,不能用于更新和插入
  2. 字段别名只能用于查询,不能用于更新和插入.

索引别名操作

给索引创建一个别名

#给指定的索引关联一个别名
PUT cuiyaonan_index/_alias/myalias

获取所有的别名与索引的对应关系

GET _cat/aliases

es 别名索引查询 es索引别名的使用场景_字段_04

如上的比较简单知识针对单一索引的增删.如下是删除一个索引别名,同时增加一个索引别名,当然也是可以独立的(可以重复增加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

es 别名索引查询 es索引别名的使用场景_应用场景_05

限制别名能查到的数据 ,如下所示: 给索引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"
        }
      }
    }
  }
}