自从elasticSearch更新到7.x之后,就取消了type的概念,这从结构上来讲可以说是改变了es原来的底层结构(可以这么认为),因为之前es也是参考于基本的数据库结构:库-表-行来设计的,也就是说现在的es去除了type就是相当于去除了表的设计。
所以我们就不能像以前一样每个表对应一个type了,但是这个时候又引入了一个新的概念:别名
什么是别名呢?它的到来能影响什么呢?
首先我们要理解es之前的搜索的设计:
我们要在一个库里面搜索一个关键字,我们可以直接搜索一个库下面所有的表,也就是type,但是现在这招不适用es7.x以上了,所以我们可以理解别名的作用是用来给index创建一个分组,这样我们在查询的时候就可以去分组中查询关键字,这样的结果也就是将很多的index给聚集起来一起查询,光说大家可能还不是怎么理解,下面给大家具体演示一下:
首先我们的查询是这样的:
上面的意思就是在索引为
special_express_fee中查询type字段中包含顺丰的数据
但是es7.x之后如果我们新建一个special_express_fee_copy表,我们就需要用以下的方式去查询
这显然是不符合全局搜索的要求的,因为它是从两个不同的索引去搜索关键字。但是我们给两个索引加上别名之后:
创建索引时加入别名定义
一个索引可以接受多个别名,而一个别名也可以映射到多个索引,当指定别名时,别名将自动扩展到添加的索引
给已创建的索引添加别名
查询别名
这样我们就将他们这些索引给添加了一个别名,这使得我们在查询的时候可以通过去查询别名的时候去进行类似于全库查询的方式去查询关键字,就像这样:
别名查询
这样通过别名去查询的方法,就相当于全库查询,查询所有索引别名为
special_express_fee_all的索引信息
为什么我不建议把ElasticSearch6版本升级到7版本呢?主要有以下几个原因:
-
可能会对系统稳定性和性能造成影响。每个新版本都可能会引入一些新问题和挑战,而且新版本也不一定总是能够兼容旧版本。因此,升级可能会导致一些未知的问题和风险,甚至可能会对系统的稳定性和性能造成不利影响。
-
不同版本之间的差异。ElasticSearch7版本相较于6版本来说有了重大变化和更新,例如,索引模块和搜索请求参数等方面都有所改变。这就意味着,在从6版本升级到7版本时,需要花费更多的时间和工作量来适应和了解新版本的各种更新和改动。
总之,尽管ElasticSearch 7版本具有许多吸引人的新特性和功能,但升级到其新版本并不总是最好的选择。在升级之前,务必要充分评估实际需求和系统情况,并谨慎考虑变化可能带来的风险和利益。