我的一个索引(在ES6.2中)的部分映射如下
"sdata": {
"type": "object",
"dynamic": true,
"properties": {
"xyz": {
"dynamic": true,
"properties": {}
},
"students": {
"dynamic": true,
"properties": {
"name_age": {
"dynamic": "true",
"type": "object",
"properties": {
}
},
"school_id": {
"type": "integer"
}
}
}
}
}
和该索引的一个示例文档如下:
{
"sdata": {
"xyz": {
"abc": 0,
"def": 0,
"klm": null
},
"students": {
"roll_age": {
1021: 27,
99271: 12,
5119: 21,
},
"school_id": 12
}
}
}
我有一个轻松的脚本,我的目标是根据提供的学生的卷号(即随机数)进行自定义评分计算。例如,如果 学生成绩为99271,则应返回得分12
我试图用以下两种方式编写脚本-下面的option1和option2。他们都没有工作。
"script": {
"params": {
"student_roll": 99271
},
"source": """
// option - 1
if (doc['sdata.students.roll_age'].containsKey(params.student_roll)) {
// how to return the value?
}
// option - 2
int ilen = doc['sdata.students.roll_age'].length;
for (int i = 0; i < ilen; i++) {
if(doc['sdata.students.roll_age'][i] == params.student_roll) {
return doc['sdata.students.roll_age'][i];
}
}
"""
}
有人知道如何通过轻松的脚本来获得它吗?