Post filter
在已经计算了聚合之后,post_filter
应用于搜索请求最后的搜索结果hits
。其目的最好的例子如下:
想像一下,您正在销售具有以下属性的衬衫:
想象一下,用户已经指定了两个过滤器:
color:red
与brand:gucci
。你只想在搜索结果中显示 Gucci 制作的红色衬衫。 通常你会使用布尔查询:
但是,您也可以使用分面导航来显示用户可以点击的其他选项的列表。也许你有一个model
字段,允许用户将他们的搜索结果限制在红色的Gucci t-shirts
或者dress-shirts
。
这可以通过terms aggregation来完成:
① 返回Gucci最受欢迎的红色衬衫款式。
但也许你也想告诉用户Gucci衬衫有多少可用的其他颜色。 如果只是在color
字段上添加terms
聚合,则只会返回红色
,因为您的查询只返回Gucci的红色衬衫。
相反,您希望在聚合期间包括所有颜色的衬衫,然后仅将颜色过滤器应用于搜索结果。 这是 post_filter
的目的:
①
主查询现在查找 Gucci 的所有衬衫,而不考虑颜色。
②
colors
聚合返回 Gucci 的衬衫的流行颜色。
③,④
color_red
聚合将限制在red
Gucci 衬衫下进行款式子聚合
⑤
最后,post_filter
从搜索hits
中除去红色以外的颜色。
Last updated