elasticsearch,Groovy,elasticsearch" /> elasticsearch,Groovy,elasticsearch" />

Groovy 弹性搜索-正常查询有效,但类似模糊搜索的搜索不起作用(使用函数评分)

Groovy 弹性搜索-正常查询有效,但类似模糊搜索的搜索不起作用(使用函数评分),groovy,elasticsearch,Groovy,elasticsearch,我想做的就是从模糊的查询中得到分数,比如这个查询,以便进一步处理。它不起作用,但正常查询起作用 这起作用了 POST /merchantindex/_search { "query": { "function_score" : { "query" :{ "query_string": { "query": "tes"} }, "functions": [ {

我想做的就是从模糊的查询中得到分数,比如这个查询,以便进一步处理。它不起作用,但正常查询起作用

这起作用了

POST /merchantindex/_search
{
    "query": {
      "function_score" : {
         "query" :{
            "query_string": { "query": "tes"}
         },
         "functions": [
         {
            "script_score": {
                "script": "return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));"
            }
         }
       ]
     }
   }
}
但这不管用

POST /merchantindex/_search
{
    "query": {
      "function_score" : {
         "query" :{
            "fuzzy_like_this" : {
        "fields" : ["title", "desc", "loc.locNm", "category", "subCategoryList.subCategory"],
        "like_text" : "tes",
        "max_query_terms" : 12
    }
         },
         "functions": [
         {
            "script_score": {
                "script": "return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));"
            }
         }
       ]
     }
   }
}
我得到的错误是

{
   "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[H94j5eYQRXantctqOKMduw][merchantindex][0]: QueryPhaseExecutionException[[merchantindex][0]: query[function score (null,function=script[return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));], params [null])],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[NullPointerException[null]]; }{[H94j5eYQRXantctqOKMduw][merchantindex][1]: QueryPhaseExecutionException[[merchantindex][1]: query[function score (null,function=script[return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));], params [null])],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[NullPointerException[null]]; }{[H94j5eYQRXantctqOKMduw][merchantindex][2]: QueryPhaseExecutionException[[merchantindex][2]: query[function score (null,function=script[return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));], params [null])],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[NullPointerException[null]]; }{[H94j5eYQRXantctqOKMduw][merchantindex][3]: QueryPhaseExecutionException[[merchantindex][3]: query[function score (null,function=script[return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));], params [null])],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[NullPointerException[null]]; }{[H94j5eYQRXantctqOKMduw][merchantindex][4]: QueryPhaseExecutionException[[merchantindex][4]: query[function score (null,function=script[return _score/log(1.1 + sqrt(pow(_source.userLoc.coordinates[0] - _source.loc.coordinates[0],2)+pow(_source.userLoc.coordinates[1] - _source.loc.coordinates[1],2)));], params [null])],from[0],size[10]: Query Failed [Failed to execute main query]]; nested: GroovyScriptExecutionException[NullPointerException[null]]; }]",
   "status": 500
}

请给我点化一下senpai

我已经解决了。对于脚本评分,请记住检查空值。如果为空,则可能将该值替换为1