dream

一个菜鸟程序员的成长历程

0%

ElasticSearch五--ES--倒排索引

正排索引和倒排索引

正排索引

正排索引就是通过索引id找到内容,比如通过书本的目录找到内容。

倒排索引

倒排索引就是把正排索引倒过来,通过内容找到索引id.

建立一个倒排索引

id 内容
1 php java go
2 php es
3 php 开发

把上面的内容可以建立成下面的倒排索引

内容 Count id
php 3 1:0,2:0,3:0
java 1 1:1
go 1 1:2
es 1 2:1
开发 1 3:1

倒排索引的核心组成

单词词典 记录所有文档的单词 记录单词到倒排列表的关联关系。
单词词典一般比较大,可以通过B+树或hash拉链法实现,以满足高性能的插入和查询

倒排列表记录了单词对应的文档结合,由倒排索引项组成

倒排索引项

  • 文档id
  • 词频 该单词在文档中出现的次数,用于相关性评分
  • 位置 单词在文档中分词的位置。用于语句搜索
  • 偏移 记录单词的开始结束位置,实现高亮显示

ES中的倒排索引

ES的JSON文档中的每个字段,都有自己的倒排索引
可以指定对某些字段不做索引

  • 优点:节省存储空间
  • 缺点:字段无法被搜索

极客时间 ES 学习笔记