es的查询逻辑是采用倒序索引
1、倒排索引表
- 索引表实例
id | name |
---|---|
1 | 深圳第一人民医院 |
2 | 深圳图书馆 |
3 | 深圳儿童医院 |
4 | 南山图书馆 |
- 倒序索引表
分词term | posting list |
---|---|
深圳 | [1,2,3] |
图书馆 | [2,4] |
儿童 | [3] |
南山 | [4] |
如上实例:倒序索引表就是将key-value中的value作为索引的表。
2、倒排索引表中分词term列的存储
-
查询速度:如果倒排索引表中的term之非常多,遍历查找则会十分的慢。所以针对所有的term,在内存中建立B+树形结构的索引,相比关系行数据库在磁盘上建立索引要快的多。
分类索引的索引
-
索引存储 :但是在内存建立索引接口必须考虑存储的问题。使用FST(Finite-status transduer)技术
3、倒排索引表中posting list的存储
如果term是性别,posting list则会特别的大,存储可能是个问题,为了优化存储要求:
1、id的list必须为递增的排序方式
2、采用索引帧和增量编码的方式,压缩id的存储长度
例如:

网友评论