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()
我有这种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()