从ElasticSearch7开始一个索引里面只允许有一个映射
在ElasticSearch7版本之前,ES的一个索引里面可以有多个映射关系。为什么呢?因为ES最初设计的时候是类比于像mysql这样的关系型数据库,比如说ES的索引就相当于是关系型数据库中的数据库;ES的映射就相当于是关系型数据库中的表;ES的文档就相当于表里面的每一行。
因此在最初的时候 也就意味着 一个索引里面可以有多个映射,因为一个关系型数据库里面可以有多张表嘛!
但是后来发现这样做有一个很严重的问题,是什么呢?就是我们的ES中的每个索引都会有一个倒排索引,会记录这个索引中关键字出现的文档id。比如用户在搜索引擎输入 “华为”关键字,那么ES就会去倒排索引中寻找这个关键字的文档对应的id。 但是如果同一个索引 的两个不同映射里面,有一个属性名字一样 但是类型不一样,Es就不知道该去找倒排索引的哪一行了,因为这两个的属性名字都一样 比如都是叫做手机名字,但是类型却不一样,所以对于ES搜索引擎来说不好处理。因此在ElasticSearch7版本之后 就不再允许一个索引里面创建多个映射了,一个索引里面只允许创建一个映射。