原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_filtering_queries.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_filtering_queries.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_filtering_queries.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
过滤查询 (Filtering Queries)edit
如果我们想找到售价在 $10,000 美元之上的所有汽车同时也为这些车计算平均售价,
可以简单地使用一个 constant_score
查询和 filter
约束:
GET /cars/transactions/_search { "size" : 0, "query" : { "constant_score": { "filter": { "range": { "price": { "gte": 10000 } } } } }, "aggs" : { "single_avg_price": { "avg" : { "field" : "price" } } } }
> 译者注: constant_score
是一个固定评分的查询, 就是不再计算每个文档的评分, 属于一种 non-scoring查询.
这正如我们在前面章节中讨论过的那样,从根本上讲,使用 不计算文档得分(non-scoring) 的查询和使用 match
查询没有任何区别。查询(包括一个过滤器 (filter) )返回一组文档的子集,聚合正是操作这些文档。恰好它忽略了评分,并有可能会主动缓存结果数据等等。