🎯摘要

看完本文,你可能有如下收获:

  • 了解正排索引
  • 了解倒排索引及其与正排索引区别

⭐️⭐️该收获仅供参考,真实收获以实物为准😇😇

🍭正排索引

Elasticsearch里存储的文档数据和MySQL存储的数据概念对比如下:

mysql实现倒排索引 mysql 倒排索引_mysql实现倒排索引


在后来版本中,一个INDEX下只能包含一个TYPE,故TYPE已经被移除。索引一词并不陌生了,在学习MySQL等数据库就有此概念,通常会拿图书的目录和内容做例子,比如当我们需要在CSDN上查找关于Elasticsearch的文章时,通常会在导航栏选择大数据->Elasticsearch

mysql实现倒排索引 mysql 倒排索引_java_02


MySQL所使用的索引可以看做是正排索引,假如我们要为上述的例子设计表:

标签名

文章ID

zookeeper

1000

elasticsearch

1001

big data

1002



文章ID

内容

1000

目前国内有大量的公司都在使用 Elasticsearch…

1001

目前都在学习ElasticSearch,之前也零零散散的学过一点…

1002

Elasticsearch还结合Kibana、Logstash、Elastic Stack还被广泛运用在大数据近实时分析领域…



正排索引下,只需要对ID建立索引,当我们查找时只需要通过文章ID就可以查到需要的文章了,即通过主键ID关联文章内容。但是,如果我们要通过文章中的内容去检索文章怎么办呢?

mysql实现倒排索引 mysql 倒排索引_elasticsearch_03


在MySQL中势必会根据关键词去文章内容做模糊查询,因为模糊查询就是遍历查询,这是非常慢的,而是还会出现大小写匹配等问题,这都会影响速度和准确率,所以这种时候就需要使用倒排索引

🍋倒排索引

倒排索引是通过文章内容关键字关联文章ID,与正排索引刚好是反的,那么对上表,它的倒排索引大概如下:

关键字

文章ID

Elasticsearch

1000,1001,1002

国内

1000



总结一句话就是正排索引是在文档里匹配关键字,而倒排索引是根据关键字找文档,刚好相反


☀️目前正在更新的相关内容:计算机基础、Java、Spring全家桶、数据库、微服务组件、项目实战、面试真题、校招经验…☀️
💝感谢各位的观看,文章系个人理解,如有错误请联系我指出 :)💝