过滤查询 (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) )返回一组文档的子集,聚合正是操作这些文档。恰好它忽略了评分,并有可能会主动缓存结果数据等等。