私のインデックスの 1 つの部分的なマッピングは次のとおりです。
"schools": {
"type": "object",
"dynamic": true,
"properties": {}
}
既存のドキュメントのサンプルschools
オブジェクトは次のとおりです。
"schools": {
"8291": {
"max": 11,
"min": 11
},
"3546": {
"max": 12,
"min": 10
},
"3896": {
"max": 18,
"min": 12
}
}
私はES6.2に痛みのないスクリプトを持っています.動的にkey
(例えば3896)は実行時に計算され、パラメータとしてスクリプトに渡されます.
"script": {
"params": {
"key": key
},
"source": {
if (doc.containsKey('schools') && doc.schools.containsKey(key)){
String dynamic_key = "schools."+key+".min";
return doc[dynamic_key].value;
} else {
return 0;
}
}
したがって、渡されたkey
値が 3896 の場合、これは 12 を返すはずですが、エラー メッセージが表示されます。
No field found for [schools.3896.min] in mapping with types [myindexname]
私は何を間違っていますか?キー名が実行時に計算されてその値を取得する動的オブジェクトにアクセスする正しい方法は何ですか?