首页 > 解决方案 > Elasticsearch:从评分中排除过滤子句

问题描述

我在查询子句的深处有一个过滤器子句,但我认为计算过滤器子句的分数没有意义。我怎样才能去掉这个过滤子句?这会提高性能吗?

{
   "size" : 30,
   "sort" : [
      {
         "_score" : {
            "order" : "desc"
         }
      }
   ],

   "query" : {
      "function_score" : {
         "score_mode" : "sum",
         "boost_mode" : "sum",
         "functions" : [
            {
              ...
              <filter_clause>
            }
         ]
       }
   }
}

标签: elasticsearch

解决方案


您可以将任何(子)查询包装在过滤器上下文中,这是一个没有评分的是/否操作:

{
  "query": {
    "bool": {
      "filter": [
        {...}
      ]
    }
  }
}

虽然function_scores应该会影响得分,所以我认为以这种方式禁止它是没有意义的。


推荐阅读