一.基础概念
定义:
倒排索引是一种数据结构,用来加速文本数据的搜索和检索,和传统的索引方式不同,倒排索引会被每个词汇项与包含该词汇项的文档关联起来,从而去实现快速的全文检索。
举例:
在传统的全文检索中,我们需要获取一篇文章中包含某个词的方式,是先获取这篇文章的内容,再从文章中去找到对应的关键词;
而如果我们希望输入一个关键词去找到包含这个关键词的文章,对于这种索引结构,我们可以称为是倒排索引。
下图展示了倒排索引的原理:
Term Dictionary:关键词;
Posting:包含关键词的文档id;
Term Index:优化关键词(相当于对关键词做了一个索引,来优化关键词,提高查询速度)。
二.作用
倒排索引在ElasticSearch中的作用主要体现在三个方面:
1.快速全文搜索
倒排索引允许ElasticSearch在大规模文本的数据集中,去实现快速的全文搜索,它可以快速确定哪些文档中,包含搜索查询的关键词,从而提高搜索效率;
2.高效的分布式搜索
ElasticSearch是一个分布式搜索引擎,它把数据分散存储在多个节点上,那么倒排索引的使用,使得每个节点都能够去独立执行部分搜索任务,然后将结果进行合并,从而去实现高效的分布式搜索;
3.复杂查询的支持
ElasticSearch支持负载查询的操作,包括布尔逻辑、范围查询和模糊查询等等,那么倒排索引的存储和查询机制为这些复杂查询提供了高性能的支持。
总结:
倒排索引是ElasticSearch的核心组成部分,它为搜索引擎提供了快速高效的全文搜索能力,通过把词汇项和文档建立关联,倒排索引使得在大规模的文本数据集中去查询信息变得异常高效。