Query
在过滤结果集的同时,会计算结果文档和查询条件的相关度,并将返回结果集按照相关度的高低排序。从下图中也可以看出,在返回的数据中每个文档都有_score属性,并且属性值都不为0,返回结果集也是按照_score属性值的高低排序的。由于每次新增或者删除文档都有可能导致计算出来的_score值发生变化,需要重新计算,所以ES不会缓存Query的结果。
Filter
只是按照搜索条件过滤出需要的数据而已,不计算任何相关度分数,对相关度没有任何影响。从下图中也可以看出,虽然返回的每个文档都有_score属性,但属性值都为0。由于Filter相当于只是回答是或者不是,所以ES会使用Page Cache将Filter的结果缓存起来,当新增和删除文档时, 也会更新FIlter的结果。