由于您在主/父级查询中提供了排序,因此将仅对父/根文档进行排序。正如您可能已经观察到的结果所示,文档以m_Companes.value的最小值排序。
要对每个文档的嵌套文档进行排序,您必须深入嵌套文档并应用排序,因为m_Companies是父文档中的子文档。您必须使用嵌套的inner_hits,然后对inner_hits进行排序。
这个github问题有一个很好的例子,说明了我正在尝试解释的内容,因为这是如何基于嵌套文档中的值仅对父/根文档进行排序的。
由于您希望所有文档都嵌套,因此您可以让嵌套查询使用match_all获取所有嵌套文档并根据值字段进行排序。
您可以使用以下查询
{
"_source": ["m_iYear", "m_Companies"],
"query": {
"bool": {
"must": [{
"terms": {
"m_iTopicID": [11, 12, 13]
}
},
{
"nested": {
"path": "m_Companies",
"query": {
"match_all": {}
},
"inner_hits": {
"sort": [{
"m_Companies.value": "asc"
}]
}
}
}
]
}
},
"sort": [{
"m_Companies.value": {
"order": "asc",
"nested_path": "m_Companies"
}
}]
}
希望这会有所帮助,谢谢