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