Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
1)在倒排索引中查找搜索串,获取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 (2)为每个在倒排索引中搜索到的结果,构建一个bitset,[0, 0, 0, 1, 0, 1] 非常重要 使用找到的doc list,构建一个bitset,就是一个二进制的数组,数组每个元素都是0或1,用来标识一个doc对一个filter条件是否匹配,如果匹配就是1,不匹配就是0 [0, 1, 1] doc1:不匹配这个filter的doc2和do3:是匹配这个filter的 尽可能用简单的数据结构去实现复杂的功能,可以节省内存空间,提升性能 (3)遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的document 后面会讲解,一次性其实可以在一个search请求中,发出多个filter条件,每个filter条件都会对应...
