虽然这两个给我相同的结果,但在内部或外部安装过滤器有什么区别?在表现或幕后动作方面是否有所不同?
"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,即,聚合只会出现在查询结果上。