没必要强行用数据库的思维来使用 es ,这只会让初学者更加困惑,index 就是表示一种(一类)东西,从字面意思去理解即可。
为什么删除 type 可以看官方的解释:
https://github.com/elastic/elasticsearch/blob/6.5/docs/reference/mapping/removal_of_types.asciidoc谷歌机翻:
为什么要删除映射类型?
最初,我们谈到索引类似于 SQL 数据库中的数据库,类型相当于表。
这是一个糟糕的类比,导致了错误的假设。在 SQL 数据库中,表是相互独立的。一个表中的列与另一个表中的同名列无关。对于映射类型中的字段,情况并非如此。
在 Elasticsearch 索引中,不同映射类型中具有相同名称的字段在内部由相同的 Lucene 字段支持。换句话说,使用上面的示例,用户类型中的 user_name 字段与 tweet 类型中的 user_name 字段存储在完全相同的字段中,并且两个 user_name 字段在两种类型中必须具有相同的映射(定义)。
例如,当您希望 delete 成为同一索引中一种类型的日期字段和另一种类型的布尔字段时,这可能会导致挫败感。
最重要的是,在同一索引中存储具有很少或没有共同字段的不同实体会导致数据稀疏并干扰 Lucene 有效压缩文档的能力。
由于这些原因,我们决定从 Elasticsearch 中删除映射类型的概念。