函数得分 groovy 脚本未返回任何结果
function score groovy script not returning any result
我的查询是
{
"query": {
"function_score": {
"functions": [{
"script_score": {
"lang": "groovy",
"script_file": "category-score",
"params": {
"my_modifier": "doc['category'].value"
}
}
},
{
"script_score": {
"lang": "groovy",
"script_file": "popularity-score",
"params": {
"my_modifier": "doc['popularity'].value"
}
}
},
{
"script_score": {
"lang": "groovy",
"script_file": "type-score",
"params": {
"my_modifier": "doc['finder_type'].value"
}
}
}
],
"query": {
"filtered": {
"query": {"multi_match": {
"query": "rent,buy",
"fields": ["category","categorytags"]
}},"filter": {
"bool" : {"must": [{"terms" : { "city": ["mumbai"] }}]}
},"_cache" : true
}
},
"score_mode": "sum",
"boost_mode": "replace"
}
}}
我的四个脚本文件看起来像
(my_modifier == 'rent,buy' ? 10 : 0)
log(my_modifier1.value)
(my_modifier2 > 0 ? 20 : 0)
我正在尝试使用三个 script_score 函数计算函数得分中匹配文档的得分。
正如我在日志中看到的那样,我的脚本在启动时被编译,但它 return 我没有任何 result.ES 版本是 1.6.0。
另外,我如何在 ES-1.6.0 上启用 inline/dynamic 脚本,因为我尝试在 elasticsearch.yml 中进行许多设置更改,因为 ES 在 1.6.0 版本中对脚本模块进行了一些重大更改。
"my_modifier": "doc['finder_type'].value"
Params 应该是一个值而不是脚本。
我的查询是
{
"query": {
"function_score": {
"functions": [{
"script_score": {
"lang": "groovy",
"script_file": "category-score",
"params": {
"my_modifier": "doc['category'].value"
}
}
},
{
"script_score": {
"lang": "groovy",
"script_file": "popularity-score",
"params": {
"my_modifier": "doc['popularity'].value"
}
}
},
{
"script_score": {
"lang": "groovy",
"script_file": "type-score",
"params": {
"my_modifier": "doc['finder_type'].value"
}
}
}
],
"query": {
"filtered": {
"query": {"multi_match": {
"query": "rent,buy",
"fields": ["category","categorytags"]
}},"filter": {
"bool" : {"must": [{"terms" : { "city": ["mumbai"] }}]}
},"_cache" : true
}
},
"score_mode": "sum",
"boost_mode": "replace"
}
}}
我的四个脚本文件看起来像
(my_modifier == 'rent,buy' ? 10 : 0)
log(my_modifier1.value)
(my_modifier2 > 0 ? 20 : 0)
我正在尝试使用三个 script_score 函数计算函数得分中匹配文档的得分。 正如我在日志中看到的那样,我的脚本在启动时被编译,但它 return 我没有任何 result.ES 版本是 1.6.0。 另外,我如何在 ES-1.6.0 上启用 inline/dynamic 脚本,因为我尝试在 elasticsearch.yml 中进行许多设置更改,因为 ES 在 1.6.0 版本中对脚本模块进行了一些重大更改。
"my_modifier": "doc['finder_type'].value"
Params 应该是一个值而不是脚本。