我有这种Groovy脚本:
def multiplier = doc['data'].value
if (multiplier <= 0) {
multiplier = 1
}
multiplier * _score
我将它用作script_score
,我的得分始终为0.似乎_score
始终为0.使用mvel脚本,它可以正常工作。
mvel脚本是:
_score * doc['data'].value
查询(对于mvel版本仅进行lang
次更改):
"function_score": {
query: {
"bool": {
"should": [
// many matches...
],
"minimum_should_match": 1,
},
},
"script_score": {
"lang": "groovy",
"file": "my_script",
},
"boost": 2.5,
"score_mode": "max",
}
我做错了吗? 我在Elasticsearch 1.5.2上测试了这个。
答案 0 :(得分:3)
我对此没有很好的解释,但此查询在Groovy中适用于我(必须在脚本中启用日志以查看_score
包含的内容):
multiplier * _score.score()