过滤器在过滤后的查询内部或外部是否重要?

时间:2015-03-09 08:33:45

标签: elasticsearch

虽然这两个给我的结果相同,但是在内部或外部使用过滤器有什么区别?在表现或幕后行动方面是否存在差异?

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

1 个答案:

答案 0 :(得分:22)

在查询中过滤

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

查询后过滤

先运行查询,然后将然后结果过滤后再将其返回给客户端。 这被称为post_filter

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