如何在Elasticsearch查询中指定过滤器和查询的执行顺序

时间:2017-07-11 21:51:59

标签: elasticsearch

在Elasticsearch中考虑以下查询:

GET nyc_visionzero/_search
{
    "query": {
        "bool": {
            "must": [{
                   "fuzzy": {
                      "on_street_name": "AVENUE"
                   }
               }
            ], 
            "filter": {
                "term": {
                   "borough": "MANHATTAN"
                }
            }
        } 
    }
}

首先执行filter部分然后执行fuzzy还是反过来?如果我想改变执行顺序怎么办?我怎么能这样做?

1 个答案:

答案 0 :(得分:-2)

此问题与查询与过滤器上下文主题有关。查询上下文中的所有内容(此处为query.bool.must)都计入文档的分数,而过滤器上下文中的条件(query.filter)则为是/否决定。

因此从性能角度来看,过滤器速度更快,可以缓存。另一方面,查询允许一些模糊性。

the elasticsearch docs on query and filter context中有更详细的解释。