为什么Elasticsearch 7.x后移除了Type

为什么要删除映射类型?
最初,我们谈到“索引”类似于 SQL 数据库中的“数据库”,而“类型”等同于“表”。

这是一个糟糕的类比,导致了错误的假设。在 SQL 数据库中,表是相互独立的。一个表中的列与另一表中同名的列没有关系。对于映射类型中的字段,情况并非如此。

在 Elasticsearch 索引中,不同映射类型中具有相同名称的字段在内部由相同的 Lucene 字段支持。换句话说,使用上面的例子,user 类型中的 user_name 字段与 tweet 类型中的 user_name 字段存储在完全相同的字段中,并且两个 user_name 字段在两种类型中必须具有相同的映射(定义)。

例如,当您希望删除为同一索引中的一种类型的日期字段和另一种类型的布尔字段时,这可能就无法支持。

最重要的是,在同一索引中存储具有很少或没有共同字段的不同实体会导致数据稀疏并干扰 Lucene 有效压缩文档的能力。

由于这些原因,我们决定从 Elasticsearch 中删除映射类型的概念。

具体的可以参考官方说明:Removal of mapping types

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容