栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch项目实战整理之倒排索引

Elasticsearch项目实战整理之倒排索引

何为倒排索引,要理解倒排索引的概念还要结合着正向索引一起理解,当我们深入了解mysql的索引之后,我们就对所谓正向索引有了一定了解,从宏观角度来看,mysql中正向索引是对每一行数据都加了一个类似目录的东西,我们通过目录索引找到符合条件的数据行,每一个索引对应一条数据,当然索引的具体实现与上文描述略有差异,此处先按下不讲。

正向索引结构如下

倒排索引最直观的感受就是对关键词搜索查询速度很快,索引的主体是关键词。

倒排索引结构如下

倒排索引同一字段索引的一个关键词下面有多个文档,一个文档也会对应多个关键词,多个不同关键词对应的文档中可能有相同的文档,正向索引同一个字段索引不同关键词对应的文档绝不相同, 正向索引主体是文档,文档是唯一的,索引是为了更方便快捷的访问文档。倒排索引主体为索引,索引是唯一的,文档让位于索引。正向索引的目的是为了文档遍历,倒排索引目的是为了文档的归类。

  1. 正向索引目的为了文档遍历。mysql的innodb搜索引擎支持btree索引,btree索引使用的就是所谓的正向索引,我们在使用mysql进行数据搜索时,我们可以通过索引定位到数据位置,并不需要遍历全部数据。但何为搜索,搜索即为将所有数据遍历一遍,拿出来符合条件的数据。btree索引构造的搜索树由于本身已有序,便不需要我们进行全部数据的遍历,但排序操作其实已经隐含了遍历操作,我们已经事先进行了遍历排序,使数据有序排列,实际搜索中便不再需要遍历所有数据。所以对于可以通过文档遍历来进行的操作都可以使用正向索引,如 排序,聚合操作,等值查询,范围查询。
  2. 倒排索引目的是文档归类。与正向索引不同,倒排索引是无序的,是将文档根据索引进行分类,此分类过程中也会将文档进行所谓的全部遍历,将包含对应关键词的文档归在一起,主体是关键词,查询也仅是针对关键词进行等值查询。

所以, 倒排索引仅适用于字符串的等值查询,正向索引可以做排序,聚合操作,等值查询,范围查询等操作,倒排索引仅关注等值查询,等值查询速度极快,正向索引兼任多种功能,等值查询速度略差与倒排索引。所以es中对于等值查询使用的是倒排索引,对于排序,聚合操作使用的是正向索引。

正向索引修百技,倒排索引精一技。 与人生何其相似矣

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/422856.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号