ES 中的Query与Filter区别

发布时间 2023-09-14 10:36:57作者: 蛋蛋十二月

query与filter的区别

filter:可以简单的理解为Filter就是数据库中的查询语句, 结果是确定的。即满足查询条件就返回, 不满足就不返回.

query:而Query则是文档相关性的查询, 他总会返回数据(一般情况下, 只是匹配度不高), 而且是按照相关性从大到小排序.

总结

1、因此filter的查询是没有评分的,而query的查询是有评分的
2、filter有相应的缓存机制,可以提高查询效率,并且因为filter不计算相关性评分,所以查询速度更快

query与filter如何配合

利用filter的高性能快速过滤大部分数据,再利用query来精确查询所需要的数据。使用query+filter既能保证速度又能保证结果的相关性

一个不太形象的比喻。一个渣男要找对象,那么他的对象就必须是女的, 这个时候如果有一个人群的集合,就需要用Filter把全部的女性找出来;晒完之后,再根据漂亮程度排个序,这里的漂亮程度就可以用Query来表示。身材如何,身高如何,三维,腿,脸等,都可以作为Query的查询维度并给定参数。这时,不管这个集合中的女性是否比外界其他的女性漂亮多少,总会返回给你一个结果。但你是否满意就得另说了。