elastic search中filter过滤器内部实现

本文详细介绍了Elasticsearch中filter过滤器的工作流程,包括在倒排索引中查找匹配项,构建bitset,遍历过滤条件,缓存优化以及如何处理文档的新增和修改。filter通过bitset高效地过滤数据,不计算相关性分数,适用于快速筛选数据。
摘要由CSDN通过智能技术生成

大致过程:

  1. 在倒排索引中查找搜索串,获取document list;
  2. 为每个在倒排索引中搜索到的结果,构建一个bitset;
  3. 遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的document;
  4. caching bitset,跟踪query;
  5. 如果document有新增或修改,那么cached bitset会被自动更新;
  6. 以后只要是有相同的filter条件的,会直接来使用这个过滤条件对应的cached bitset。

具体过程:

  • 在倒排索引中查找搜索串,获取document list;

date来举例

word        doc1        doc2        doc3

2017-01-01    *        *
2017-02-02            *        *
2017-03-03    *        *        *

filter:2017-02-02

到倒排索引中查找,发现2017-02-02对应的document list是doc2,doc3;

  • 为每个在倒排索引中搜索到的结果,构建一个bitset,[0, 0, 0, 1, 0, 1]

使用找到的doc list,构建一个bitset,就是一个二进制的数组,数组每个元素都是0或1,用来标识一个doc对一个filter条件是否匹配,如果匹配就是1,不匹配就是0
[0, 1, 1]
doc1:不匹配这个fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值