【ElasticSearch教程】--- Elasticsearch倒排序(三)

本文介绍了Elasticsearch的数据模型,将其与关系型数据库Mysql进行对比,并详细解释了倒排索引的概念。倒排索引是全文检索的核心,通过关键字关联文档,突破了传统数据库的限制。文中讨论了正排索引与倒排索引的区别,并阐述了Elasticsearch中Type概念的弱化和删除原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

倒排序

数据格式

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库Mysql存储数据的概念进行一个类比

Eslsticsearchindex(索引)Type(类型)Document(文档)Fields(字段)
MysqlDatabase(数据库)Table(表)Row(行)Column(列)

ES里面的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Type的概念已经被逐渐弱化,Elasticsearch6.X中,一个index下已经只能包含一个type,Elasticsearch7.x中,Type的概念已经被删除了。
而弱化、甚至删除整个Type的原因就是其违背了全文检索的思想。

倒排索引

要理解倒排索引我们就要先考虑个问题,那是不是有正排索引?

正排索引

正排序最好的理解其实就是我们的关系型数据库中的mysql innodedb 引擎。例如下列数据。

idcontent
1001my name is zhangsan
1002my name is lisi

mysql在存储是时候会根据主键索引将数据存放到磁盘上, 也就是主键索引定位到数据行,比如 1001 就能直接查询到 my name is zhangsan这一行数据。
简单来讲就是根据数据是索引直接定位到了数据就是正排(正向)索引。

倒排索引

倒排索引是为能更好的进行检索而诞生的。同样以上面的数据为例。

idcontent
1001my name is zhangsan
1002my name is lisi

倒排索引的处理会将数据中含有的关键字提出出来作为索引构建key-value的索引表, 而key就是关键字。存储的结构如下。

keywordid
name1001,1002
zhang san1001
san1001
li si1002

所以倒排索引强调的是关键字和文档的关联,已经突破了表(Type)的概念。所以也就被弱化掉了。

抛砖引玉

以上是我自己的理解,可能存在问题,欢迎大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值