Изменение родителей в индексе

Спасибо большое за все подсказки !
в итоге у мения получилось следуьщее query

{
  "aggs": {
    "groupId": {
      "aggs": {
        "current_score": {
          "max": {
            "script": {
              "inline": "_score"
            }
          }
        }
      },
      "terms": {
        "field": "documentId",
        "order": [
          {
            "current_score": "desc"
          }
        ],
        "size": 10
      }
    },
    "totalDistinct": {
      "cardinality": {
        "field": "documentId"
      }
    }
  },
  "from": 0,
  "query": {
    "has_parent": {
      "query": {
        "function_score": {
          "functions": [
            {
              "script_score": {
                "script": {
                  "inline": "doc['dateOfBirth'].value",
                  "lang": "groovy"
                }
              }
            }
          ],
          "query": {
            "bool": {
              "must": [
                {
                  "bool": {
                    "minimum_should_match": 1,
                    "should": [
                      {
                        "query_string": {
                          "boost": 2,
                          "fields": [
                            "name"
                          ],
                          "lenient": true,
                          "query": "*Paulina Cruz*"
                        }
                      },
                      {
                        "query_string": {
                          "fields": [
                            "name.keyword"
                          ],
                          "lenient": true,
                          "query": "*Paulina Cruz*"
                        }
                      }
                    ]
                  }
                },
                {
                  "bool": {
                    "must": [
                      {
                        "exists": {
                          "field": "id"
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      },
      "score": true,
      "type": "persontype"
    }
  },
  "_source": {
    "excludes": [
      "*"
    ]
  }
}

query для нахождения общего количества элементов

{
  "aggs": {
    "totalDistinct": {
      "cardinality": {
        "field": "documentId"
      }
    }
  },
  "query": {
    "has_parent": {
      "query": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "id"
              }
            }
          ]
        }
      },
      "type": "persontype"
    }
  },
  "_source": {
    "excludes": [
      "*"
    ]
  }
}

C# версия

body
                    .Index(_type.GetIndexName())
                    .Source(src => src.ExcludeAll())
                    .Query(q => q.HasParent<PersonType>(
                               p => p
                                       .Score(true)
                                       .Query(qqq => qqq
                                                  .FunctionScore(fs => fs
                                                                       .Query(qq => qq.Bool(b => b
                                                                                                 .Filter(permissionContainer, personFilter)
                                                                                                 .Must(queryContainers.ToArray())))
                                                                       .Functions(fct => fct
                                                                                      .ScriptScore(ss => ss
                                                                                                       .Script(cs => cs
                                                                                                                     .Inline(_descriptors.GetOrderScript(parameters.Sort))
                                                                                                                     .Lang(ScriptLang.Groovy))
                                         ))))));

                body.Aggregations(
                    aggs => aggs
                            .Terms("groupId", gr => gr
                                    .Field(f => f.DocumentId)
                                    .Order(
                                        new TermsOrder
                                        {
                                            Key = "current_score",
                                            Order = parameters.Sort.Order == Order.ASC
                                                        ? appliedSort ? SortOrder.Ascending : SortOrder.Descending
                                                        : SortOrder.Descending
                                        })
                                    .Size(parameters.Start + parameters.Length)
                                    .Aggregations(
                                           aggss => aggss
                                               .Max("current_score", tt => tt.Script("_score"))))
                            .Cardinality("totalDistinct", c => c.Field(f => f.DocumentId))
                );

                body.From(0);

                return body;

т.к. используем вегсию 5,5 многие aggregations для нас недоступны. поэтому для pagination я брала все элементы (parameters.Start + parameters.Length) и потом из них выбирала последние.

var response = Query(parameters, user, applyPermissions, flags);
            return new SearchResult<long>
            {
                Items = (response.Aggregations["groupId"] as BucketAggregate)?
                    .Items
                        .Cast<KeyedBucket<object>>()
                        .Select(bucket => long.Parse(bucket.KeyAsString ?? bucket.Key.ToString()))
                        .Skip(parameters.Start)
                        .ToList(),
                ItemsCount = (long?)((ValueAggregate)response.Aggregations["totalDistinct"])?.Value ?? 0,
                TotalCount = CountByType(user, applyPermissions, flags)
            };

Надеюсь мой опыт кому-нибудь поможет !
Еще раз, большое спасибо