首页 > 数据库 >Elasticsearch 倒排索引,ES相关概念对比MySQL

Elasticsearch 倒排索引,ES相关概念对比MySQL

时间:2024-10-15 20:45:57浏览次数:5  
标签:搜索 词条 倒排 索引 文档 MySQL Elasticsearch

elasticsearch之所以有如此高性能的搜索表现,正是得益于底层的倒排索引技术。

什么是倒排索引?

倒排索引的概念是基于MySQL这样的正向索引而言的。

倒排索引中有两个非常重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息

  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条

创建倒排索引是对正向索引的一种特殊处理和应用。

流程如下:

1. 先把文档内容进行分词,形成词条与文档ID的对应关系,就叫做词条库,词条具备唯一性,建立索引

2. 对搜索的内容进行分词,分词后会得到一个关键词列表,然后根据关键词与词条库中的词条匹配,找到对应的文档ID列表

3. 最后根据找到的文档ID列表,查找对应的文档信息

此时形成的这张以词条为索引的表,就是倒排索引表,两者对比如下:

倒排索引的搜索流程如下(以搜索"华为手机"为例),如图:

倒排索引

  • 优点:

    • 根据词条搜索、模糊搜索时,速度非常快
  • 缺点:

    • 只能给词条创建索引,而不是字段

    • 无法根据字段做排序

ES相关概念对比MySQL

标签:搜索,词条,倒排,索引,文档,MySQL,Elasticsearch
From: https://www.cnblogs.com/chengzhenghai/p/18468396

相关文章

  • Elasticsearch相关概念对比MySQL
    Elasticsearch相关概念对比MySQLElasticsearch中,文档指的是每一条数据,例如:我喜欢你。词条指的是将文档拆分成有意义的词语,例如之前的文档可拆成4个词条:我、喜欢、你。MySql中的概念Elasticsearch中的概念Table表Index索引,文档的集合Row一行行数据Document文档......
  • Elasticsearch介绍
    Elasticsearch是一个分布式搜索和分析引擎,通常用于处理大规模的结构化和非结构化数据。它基于开源的Lucene库,提供了强大、实时的搜索能力和精细的分析功能。Elasticsearch通常与其他工具(如Logstash、Kibana等)一起使用,构成了著名的ELKStack(后来改名为ElasticStack)。完整......
  • MySQL 全局表和表锁
    MySQL的锁可以分为全局表、表级表和行锁三类。全局锁加全局读锁,整个数据库处于只读状态,可以用于数据库备份flushtableswithreadlock利用重复读隔离级别,可以避免加全局锁mysqldump--single-transaction不推荐使用setglobalreadyonly=true使整库处于只读状态rea......
  • MySQL 唯一索引和普通索引
    唯一索引和普通索引的区别查询过程基本没有区别selectidfromTwherek=5InnoDB数据的读写单位是数据页,默认是16KB。更新过程普通索引可以使用changebuffer(会持久化),唯一索引不行。当需要更新一个数据页是,如果数据页在内存中就直接更新,如果数据页还没在内存中,在不......
  • MySQL 事务隔离级别实现原理
    InnoDB有两种读取数据的方式快照读/一致性读,MVCC当前读,获取读写锁后读取行的最新数据InnoDB用一致性读视图实现了MVCC,用于支持读已提交和可重复读隔离级别的实现。启动事务时立即创建视图starttransactionwithconsistentsnapshot快照读快照读/MVCCInnoDB每个事......
  • Elasticsearch
    什么是ElasticsearchElasticsearch是一个基于ApacheLucene的分布式搜索和分析引擎。它提供了一个功能强大、实时的数据存储、检索和分析的平台,尤其适合处理结构化和非结构化数据。它在大数据处理、全文搜索****、实时日志分析、监控等场景下应用广泛。核心概念索引(Index):相......
  • MySQL 行锁
    InnoDB和MyISAM对比Innodb支持崩溃恢复InnoDB支持事务InnoDB支持行锁B+Tree叶子节点存储内容不同MyISAM记录表行总数,InnoDB没有两阶段锁InnoDB读操作会使用MVCC,而写操作会使用写锁。InnoDB两阶段锁协议:行锁是在需要的时候加上的,并且要等到事务提交后才释放......
  • MySQL 选错索引
    查看执行计划选择的索引explainselect*fromtwhereabetween10000and10000;通过慢日志(slowlog)查看语句执行情况--启动慢日志SHOWVARIABLESLIKE'slow_query_log';--慢日志存储位置SHOWVARIABLESLIKE'slow_query_log_file';--慢日志阈值SHOWVARIABLES......
  • Elasticsearch正向索引与倒排索引
    Elasticsearch正向索引与倒排索引一、正向索引首先,要明白什么是正向索引,所谓正向索引,就是在查找某项数据时,按照id一条一条查找,如果当前数据中包含所需数据,则将当前数据取出,不包含则抛弃,直至全部遍历结束。例如:当我们按照正向索引去寻找包含小米三星苹果的数据时,会从头遍历一遍,......
  • 倒排索引和ES相关概念对比MySQL
    1.倒排索引1.1倒排索引两个重要概念:文档:用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息以京东商城为列词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这......