过滤器在已过滤查询的内部还是外部是否重要?

Does it matter if the filter is inside or outside a filtered query?

虽然这两个给我的结果相同,但在内部或外部安装过滤器有什么区别?在表演或幕后动作方面有区别吗?

"query": {
    "filtered": {
        "query":  { "match": { "email": "business opportunity" }},
        "filter": { "term":  { "folder": "inbox" }}
    }
}
"query": {
    "filtered": {
    "query":  { "match": { "email": "business opportunity" }}
    }
},
"filter": {
    "term":  { "folder": "inbox" }
}

在查询中过滤

Elasticsearch 将以更有效的方式执行查询和过滤,以减少结果集并尽快为您提供答案。 这被称为 filtered_query

查询后过滤

查询首先是运行,然后然后结果在返回给客户端之前被过滤。 这被称为 post_filter.

虽然 post_filter 效率较低,但它在与聚合结合时很有用 - 聚合值不会考虑 post_filter,即聚合只会在查询结果。