ES搜索简单流程还原

倒排索引

term记录所有关联记录,所有的term也是有序的,通过二分查找可以找到记录。

eg:

中国(term1)-> "我是中国人(doc1)"  "中国和平崛起(doc2)"

澳大利亚(term2)->"澳大利亚是一个没有节操的国家(doc1)" "昂撒先锋狗-澳大利亚(doc2)"

检索过程简单还原

1.通过TermIndex快速检索出,具体的term的在termDictionary中的位置

termIndex可以简单理解成B+树,叶子节点是具体的term(不包含所有的term),非叶子节点就是前缀。

2.通过term再去定位具体的term和对应posting List(就是docId的集合)

附一张经典图片

倒排索引的存储

手段一、postionList里面的documntId都是有序排列的,通过一些方式把数字变小

比如 1 2 5 8 10,改成1 1 3 3 2,大数变小数 存增量

手段二、用0/1替换原来的位置上数字是否存在

比如 13578可以用 1010101100表示【十个一组的话】

手段三、固定量的数字分成一组,一般是65535个

每组里面初始的都是0-65534,每组还原的时候 * 商

推荐一个超赞的文赞

ElasticSearch原理 - 神一样的存在 - 博客园

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值