查询与filter

我看不到什么时候应该使用查询或filter或两者的组合的任何描述。 任何人都可以请解释或指出我的解释?

区别很简单:filter被caching,不影响分数,因此比查询更快。 看看这里也是。 比方说,查询通常是用户input的内容,而且几乎不可预知,而筛选器则帮助用户缩小search结果,例如使用方面。

这是官方文件说的:

一般来说,应该使用filter来代替查询:

  • 二进制是/否search
  • 查询确切的值

作为一般规则,应该使用查询来代替filter:

  • 用于全文search
  • 结果取决于相关性分数

几乎没有相同的。 首先应用筛选器,然后对查询结果进行处理。 为了存储每个文档的二进制真/假匹配,使用称为bitSet Array的东西。 此BitSet数组在内存中,这将在第二次查询filter时使用。 这样,使用bitset数组结构,我们就可以利用caching的结果。

还有一点需要注意,filtercaching仅在执行请求时创build,因此只能从第二次访问开始,我们实际上获得了caching的优势。

但是,那么你可以使用更温暖的API ,超过这个。 当您使用filter针对较热的API注册一个查询时,它将确保在新的分段生效时执行这个查询。 因此,我们将从第一次执行本身获得一致的速度。

基本上,当您想用记分执行文档search时,会使用查询。 filter用于缩小使用查询获得的结果集。 filter是布尔型的。

例如说你有一个像zomato的餐馆索引。 现在,您要search“披萨”餐厅,这基本上是您的search关键字。

所以你将使用查询来查找所有包含“披萨”的文档,并获得一些结果。

现在说你想要的是供应披萨的餐厅的列表,并且评分至less为4.0。

所以你需要做的是在你的查询中使用关键字“披萨” ,并将评分filter应用为4.0。

会发生什么事是filter通常应用于通过查询您的索引获得的结果。