ElasticSearch实战-倒排索引算法
Posted 张志翔ۤ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch实战-倒排索引算法相关的知识,希望对你有一定的参考价值。
Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的b-tree索引快在哪里?到底为什么快呢?
一、倒排索引原理
笼统的来说,b-tree索引是为写入优化的索引结构。当我们不需要支持快速的更新的时候,可以用预先排序等方式换取更小的存储空间,更快的检索速度等好处,其代价就是更新慢。要进一步深入的化,还是要看一下Lucene的倒排索引是怎么构成的。
这里有好几个概念。我们来看一个实际的例子,假设有如下的数据:
这里每一行是一个document。每个document都有一个docid。那么给这些document建立的倒排索引就是:
可以看到,倒排索引是per field的,每一个字段都有属于自己的倒排索引。18,20这些叫做 term,
以上是关于ElasticSearch实战-倒排索引算法的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch实战-DocValue列式存储算法(数据排序/聚合统计)
ElasticSearch实战-DocValue列式存储算法(数据排序/聚合统计)