0
ルートドキュメントにある数値フィールドとネストされたドキュメントにあるフィールドを組み合わせてESドキュメントをソートしようとしています。簡単にするために、私がdoc['score'] + doc['nested.score']
で並べ替えたいとしましょう。ElasticSearch:親ネストされたフィールドの組み合わせに基づいてドキュメントをソート
例マッピングおよびデータ文書のカップルがここにある: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
を各ネストされたドキュメントにコピーすることができたことに気づいています。
ありがとうございました!しかし、それは私にとってはうまくいかないようです。これを(intの代わりに 'float 'に' max'を変更して)変更しようとすると、 'max'は常に0と評価され、戻り値は単に親の' score'になります。 'variations'はネストされたデータ型であり、単純なフィールドではありません。 – Gabriel
これはどのESバージョンですか? –
私は現在バージョン2.2を実行しています – Gabriel