我使用查询字符串查询弹性搜索,下面是我的示例查询。
{
"query_string" : {
"query" : "Sharmila"
}
}
我在文件中称为FLAG字段。如果FLAG == Y,我想提高结果。由于不推荐使用custom_score,我想使用function_score
{
"query": {
"function_score": {
"query": {
"query_string": {
"query": "Sharmila"
},
"functions": [{
"script_score": {
"script": "_score * (doc['FLAG'].value == 'Y' ? 1.2 : 1)"
}
}],
}
}
}
}
我正在异常说没有为[script_score]注册查询]
我正在使用elasticsearch 1.2.2
我在做错的任何想法?
答案 0 :(得分:1)
你几乎就在那里,你只需要将functions
属性移到function_score
之下,而不是将其埋在query
内:
{
"query": {
"function_score": {
"functions": [{
"script_score": {
"script": "_score * (doc['FLAG'].value == 'Y' ? 1.2 : 1)"
}
}],
"query": {
"query_string": {
"query": "Sharmila"
}
}
}
}
}