Используйте Вложенный запрос , чтобы отфильтровать совпадающие значения " GroupModel.ParentGroupId ", а затем примените Вложенный запрос сортировки , чтобы отсортировать результаты по " GroupModel.PeerOrder ».
Согласно документации:
Вложенный запрос : Вложенный запрос позволяет запрашивать вложенные объекты / документы (см. Вложенное отображение). Запрос выполняется к вложенным объектам / документам, как если бы они были проиндексированы как отдельные документы (они есть внутри), и в результате получается корневой родительский документ (или родительское вложенное отображение). Вот пример отображения:
PUT /my_index
{
"mappings": {
"_doc" : {
"properties" : {
"obj1" : {
"type" : "nested"
}
}
}
}
}
GET /_search
{
"query": {
"nested" : {
"path" : "obj1",
"score_mode" : "avg",
"query" : {
"bool" : {
"must" : [
{ "match" : {"obj1.name" : "blue"} },
{ "range" : {"obj1.count" : {"gt" : 5}} }
]
}
}
}
}
}
Вложенный запрос сортировки : сортировку можно выполнить по значению вложенного поля, даже если это значение существует в отдельном вложенном документе.
GET /_search
{
"query": {
"nested": {
"path": "comments",
"filter": {
"range": {
"comments.date": {
"gte": "2014-10-01",
"lt": "2014-11-01"
}
}
}
}
},
"sort": {
"comments.stars": {
"order": "asc",
"mode": "min",
"nested_filter": {
"range": {
"comments.date": {
"gte": "2014-10-01",
"lt": "2014-11-01"
}
}
}
}
}
}