Elasticsearch(ES) 为何要在 7.X版本中 去除type 的概念

Elasticsearch 为何要在 7.X版本中 去除type 的概念

背景说明

Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

Elasticsearch 是一种NoSQL数据库(非关系型数据库),和常规的关系型数据库(比如:MySQL,Oralce等)的基本概念,对应关系如下:

Elasticsearch:index -->type -->doc -->field

MySQL: 数据库 --> 数据表–> 行 -->列

因为关系型数据库比非关系型数据库的概念提出的早,而且很成熟,应用广泛。

所以,后来很多NoSQL(包括:MongoDB,Elasticsearch等)都参考并延用了传统关系型数据库的基本概念。

一个客观的现象和事实如下:

Elasticsearch 官网提出的近期版本对 type 概念的演变情况如下:

5.X版本中,一个 index可以创建****多个 type

6.X版本中,一个 index只能存在一个 type

7.X版本中,直接去除了 type的概念,就是说index 不再会有 type

为何要去除 type 的概念?

为何不是在 6.X 版本开始就直接去除 type,而是要逐步去除type?

Why?!

原因分析

1、为何要去除 type 的概念?

答: 因为 Elasticsearch 设计初期,是直接查考了关系型数据库的设计模式,存在了 type(数据表)的概念。

但是,其搜索引擎基于 Lucene的,这种 “基因”决定了 type 是多余的。 Lucene 的全文检索功能之所以快,是因为倒序索引的存在。

而这种 倒序索引 的生成是基于 index 的,而并非 type。多个type反而会减慢搜索的速度。

为了保持 Elasticsearch “一切为了搜索” 的宗旨,适当的做些改变(去除 type)也是无可厚非的,也是值得的。

所以,Why not?!

2、为何不是在 6.X 版本开始就直接去除 type,而是要逐步去除type?

答:因为历史原因,前期 Elasticsearch 支持一个 index 下存在多个 type的,而且,有很多项目在使用 Elasticsearch 作为数据库。

如果直接去除 type 的概念,不仅是很多应用 Elasticsearch 的项目面临 业务、功能和代码的大改

而且对于Elasticsearch 官方来说,也是一个巨大的挑战(这个是伤筋动骨的大手术,很多涉及到 type 源码是要修改的)。

所以,权衡利弊,采取逐步过渡的方式,最终,推迟到 7.X 版本才完成 “去除 type” 这个革命性的变革

原文地址:https://www.cnblogs.com/miracle-luna/p/10998670.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值