ルート ドキュメントにある数値フィールドと、ネストされたドキュメントにあるフィールドを組み合わせて、ES ドキュメントを並べ替えようとしています。簡単にするために、 で並べ替えたいとしましょうdoc['score'] + doc['nested.score']
。
マッピングの例といくつかのデータ ドキュメントはこちら: http://pastebin.com/9sdMphsR
doc['score']
直接アクセスしようとするため、素朴な(そして間違った)アプローチは次のとおりです。
POST /testing/stuff/_search
{
"query": {
"match_all": {
}
},
"sort": {
"_script": {
"type": "number",
"mode": "max",
"script": {
"inline": "doc['score'].value + doc['variations.score'].value",
"lang": "expression"
},
"order": "desc",
"nested_path": "variations"
}
}
}
これを行う正しい方法は何ですか?ネストされた各ドキュメントにルートレベルscore
をコピーできることはわかっていますが、それを避けることができる場合は、コピーしたいと思います。