Elasticsearch Filter缓存

Elasticsearch Filter缓存

  1. Filter简介:采用bitset记录与过滤器匹配的文档。当Elasticsearch确定一个bitset可能会在将来被重用时,将被直接缓存在内存中,以供以后使用。一旦缓存,这些bitset可以在使用相同查询的任何地方重复使用,而无需再次重新评估这个查询。

  2. 稀疏索引:就是0比较多、1比较少的情况的索引。

  3. Filter原理

    • filter并不是每次执行都会进行cache,而是当执行到一定次数的时候,才会进行cache一个二进制数组(bitset)。1表示匹配,0表示不匹配。cache时需执行次数也是不固定的
    • filter会优先从最稀疏的索引开始搜索,查找满足全部条件的doc。
    • filter cache保存的是匹配的结果,不需要再从倒排索引中去查找对比,大大的提高搜索效率。
    • filter一般会在query之前执行,过滤掉一部分数据,提高搜索效率。
    • filter不计算相关度分数,在执行效率上较query较高。
    • 当元数据发生改变时,cache也会更新。
  4. 索引值

    • 元数据
    id name desc
    1 xiaomi phone shouji zhong de zhandouji
    2 xiaomi nfc phone zhichi quangongneng nfc,shouji zhong de jianjiji
    3 nfc phone shouji zhong de hongzhaji
    4 xiaomi erji erji zhong de huangmenji
    5 hongmi erji erji zhong de kendeji
    • 倒排索引
    分词 doc
    xiaomi 1,2,4
    phone 1,2,3
    nfc 2,3
    erji 4,5
    hongmi 5
    • 元数据词频(xiaomi nfc zhineng phone)
    id name desc 匹配数
    1 xiaomi phone shouji zhong de zhandouji 2
    2 xiaomi nfc phone zhichi quangongneng nfc,shouji zhong de jianjiji 3
    3 nfc phone shouji zhong de hongzhaji 3
    4 xiaomi erji erji zhong de huangmenji 1
    5 hongmi erji erji zhong de kendeji 0
    • 二进制数组(bitset)
    分词 doc1 doc2 doc3 doc4
    xiaomi [1,1,0,1]
    nfc [0,1,1,0]
    zhineng [0,0,0,0]
    phone [1,1,1,0]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。