虽然这两个给我的结果相同,但是在内部或外部使用过滤器有什么区别?在表现或幕后行动方面是否存在差异?
"query": {
"filtered": {
"query": { "match": { "email": "business opportunity" }},
"filter": { "term": { "folder": "inbox" }}
}
}
"query": {
"filtered": {
"query": { "match": { "email": "business opportunity" }}
}
},
"filter": {
"term": { "folder": "inbox" }
}
答案 0 :(得分:22)
Elasticsearch将以更有效的方式执行查询和过滤,以减少结果集并尽快为您提供答案。 这被称为filtered_query
先运行查询,然后将然后结果过滤后再将其返回给客户端。 这被称为post_filter。
虽然post_filter的效率较低,但在与聚合结合时会很有用 - 聚合值不会考虑post_filter,即聚合只会出现在查询结果中。