您当前的位置: 首页 >  ar

大别山码将

暂无认证

  • 3浏览

    0关注

    126博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

@Elasticsearch之深度应用及原理剖析--Filter过滤机制剖析(bitset机制与caching机制)

大别山码将 发布时间:2022-09-25 18:42:38 ,浏览量:3

title: ElasticSearch之深度应用及原理剖析author: Xonitags:

  • 搜索引擎
  • Elasticsearchcategories:
  • 搜索引擎
  • Elasticsearchabbrlink: 5a1f6e0b

第1节 索引文档写入和近实时搜索原理

在这里插入图片描述

第9节 Filter过滤机制剖析(bitset机制与caching机制)

1. 在倒排索引中查找搜索串,获取document list

解析:date举例:倒排索引列表,过滤date为2020-02-02(filter:2020-02-02)。去倒排索引中查找,发现2020-02-02对应的document list是doc2、doc3。

2. Filter为每个在倒排索引中搜索到的结果,构建一个bitset,[0, 0, 0, 1, 0, 1](非常重要)

解析:

  1. 使用找到的document list,构建一个bitset(二进制数组,用来表示一个document对应一个filter条件是否匹配;匹配为1,不匹配为0)。
  2. 为什么使用bitset:尽可能用简单的数据结构去实现复杂的功能,可以节省内存空间、提升性能。
  3. 由上步的document list可以得出该filter条件对应的bitset为:[0, 1, 1];代表着doc1不匹配filter,doc2、doc3匹配filter。

3. 多个过滤条件组合查询时,遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的

document解析:

  1. 多个filter组合查询时,每个filter条件都会对应一个bitset。
  2. 稀疏、密集的判断是通过匹配的多少(即bitset中元素为1的个数)[0, 0, 0, 1, 0, 0] 比较稀疏、[0,1, 0, 1, 0, 1] 比较密集 。
  3. 先过滤稀疏的bitset,就可以先过滤掉尽可能多的数据。
  4. 遍历所有的bitset、找到匹配所有filter条件的doc。请求:filter,postDate=2017-01-01,userID=1;postDate:[0, 0, 1, 1, 0, 0]userID: [0, 1, 0, 1, 0, 1]遍历完两个bitset之后,找到的匹配所有条件的doc,就是doc4。
  5. 将得到的document作为结果返回给client。

4. caching bitset,跟踪query,在最近256个query中超过一定次数的过滤条件,缓存其bitset。对于小segment(
关注
打赏
1664364263
查看更多评论
立即登录/注册

微信扫码登录

0.0560s