拓展:类型type的移除。
这里也要先提一下Elasticsearch的存储/体系结构,这样比较方便大家理解:
下表是ELasticsearch6.x之前的 Elasticsearch 与 MySQL 数据库逻辑结构概念的对比:
Elasticsearch 关系型数据库 Mysql
索引(index) 数据库(databases)
类型(type) 表(table)
文档(document) 行(row)
当然,这个结构在Elasticsearch7.x之前是毫无争议的;但是从Elasticsearch7.x就变了,这都是因为官方要移除类型Type,为什么呢?在网上看到的一个解答是说:
Elasticsearch是基于Lucene的。
如果在一个 index 内存了多个 type,且这些 type 之间只有极少共用的字段,会使得数据过于离散,从而影响 Lucene 的压缩性能。
从ELasticsearch6.x开始,Elasticsearch 引入了一个参数控制 type 开关:include_type_name=true,表示仍使用类型 type的概念。但每个索引只能存在一个类型type ,且官方推荐名为名字为【_doc】。
从ELasticsearch7.x开始,include_type_name=false,表示已经移除了类型type的概念,但在使用过程中,仍需要在RESTful风格的url中,原本表示类型的那一层替换成_doc,至此【_doc】也被当成了是请求url涉及到类型type时的固定部分。
从ELasticsearch8.x开始,include_type_name属性被删除了。
所以我们不能也不需要再操作类型type了。
Elasticsearch的存储/体系结构现在也变成了:
Elasticsearch 关系型数据库(eg:Mysql)
es服务 数据库(databases)
索引(index) 表(table)
文档(document) 行(row)
来源:https://blog.csdn.net/weixin_42585386/article/details/127349718