elasticsearch:如何只获得标准化分数(_score除以max_score)超过一定阈值的文档

时间:2015-04-23 19:20:40

标签: elasticsearch sense

在查询时,我试图仅获取其归一化分数(_score除以max_score)高于某个阈值的文档。有没有办法做到这一点?我尝试使用功能分数,但我得到SearchPhaseExecutionException

我的使用sense插件的查询:

POST my_index/my_type/_search
{
    "query": {
      "min_score": 0.4,

      "function_score" : {
         "query" :{
            "query_string": { "_all": "test"}
         },
         "functions": [
         {
            "script_score": {
                "script": "return _score / max_score;"
            }
         }
       ]
     }
   }
}
  

异常跟踪:"错误":" SearchPhaseExecutionException [无法执行阶段[查询],所有分片都失败; shardFailures

1 个答案:

答案 0 :(得分:0)

您的查询语法错误。 “min_score”字段应位于查询块之外。而“query_string”的语法也是错误的。 Refer doc

试试这个:

POST my_index/my_type/_search
{
    "min_score": 0.4,
    "query": {
      "function_score" : {
         "query" :{
            "query_string": {
                "query": "test",
                "fields": [
                    "_all"
                ]
            }
         },
         "functions": [
         {
            "script_score": {
                "script": "return _score / max_score;"
            }
         }
       ]
     }
   }
}

此外,错误跟踪应包含有关失败的信息。通常,您应该能够从那里识别/获取错误的方向。