Elasticsearch:_score 在 Groovy 脚本中始终为 0

Elasticsearch : _score always 0 in Groovy script

我有这种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 上对此进行了测试。

我对此没有很好的解释,但是这个查询在 Groovy 中对我有用(必须在脚本中启用登录才能查看 _score 包含的内容):

multiplier * _score.score()