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

时间:2015-06-11 11:53:29

标签: groovy elasticsearch

我有这种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上测试了这个。

1 个答案:

答案 0 :(得分:3)

我对此没有很好的解释,但此查询在Groovy中适用于我(必须在脚本中启用日志以查看_score包含的内容):

multiplier * _score.score()