我的查询是
{
"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函数计算功能得分中匹配文档的分数。 我的脚本在启动时被编译,因为我可以在日志中看到,但它不会返回任何结果.ES版本是1.6.0。 另外,我如何使用ES-1.6.0启用内联/动态脚本,因为我尝试使用elasticsearch.yml中的许多设置更改作为ES,以及脚本模块的1.6.0版本的一些重大更改。
答案 0 :(得分:-1)
"my_modifier": "doc['finder_type'].value"
Params应该是值而不是脚本。