嵌套文档存储在索引中的不同文档中,因此您不能通过父文档中的doc值来访问它们。您需要使用源文档并导航至topics.weight
属性,如下所示:
孤立无痛:
int score = 0;
for(int i = 0; i < params._source['topics'].size(); i++) {
score += params._source['topics'][i].weight;
}
return score;
完整查询:
{
"query": {
"function_score": {
"query": {
"term": { "title": "Book 1" }
},
"script_score": {
"script": {
"lang": "painless",
"inline": "int score = 0; for(int i = 0; i < params._source['topics'].size(); i++) { score += params._source['topics'][i].weight; } return score;",
"params": {
"default_return_value": 100
}
}
}
}
}
}
PS:还请注意,该类型int
不存在,它是integer