.NET Client - включить свойство max_children во вложенную сортировку - PullRequest
0 голосов
/ 19 декабря 2018

, основываясь на документации и примечаниях к выпуску 6.5, у нас есть новое свойство сортировки по вложенным именам max_children.Как передать это свойство в .net клиент?

Вот мой дескриптор сортировки:

SortDescriptor.Field(x => x.Field(y => y.Variants[0].GrossPrice).Order(SortOrder.Ascending).Nested(n => n.Path(p => p.Variants).Filter(f => filerContainer)))

и часть сортировки вывода json

"variants.gross_price": {
    "order": "asc",
    "nested": {
        "path": "variants",
        //"max_children": 1,//
        "filter": {
            [...]

        }
    }
}

Max_children - этособственность, которую я хочу передать. В настоящее время это не там.Мне кажется, это должно выглядеть так:

SortDescriptor.Field(x => x.Field(y => y.Variants[0].GrossPrice).Order(SortOrder.Ascending).Nested(n => n.Path(p => p.Variants).MaxChildren(1).Filter(f => filerContainer)))

, но есть ошибка:

NestedSortDescriptor не содержит определения для MaxChildren.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

max_children для вложенной сортировки будет реализовано в клиенте в следующем выпуске.Между тем, это может быть реализовано путем получения из NestedSort

public class MyNestedSort : Nest.NestedSort
{
    [PropertyName("max_children")]
    public int? MaxChildren { get; set; }
}

и последующего использования

var client = new ElasticClient();

var searchResponse = client.Search<MyDocument>(s => s
    .Query(q => q
        .MatchAll()
    )
    .Sort(so => so
        .Field(f => 
            new SortField
            {
                Field = Infer.Field<MyDocument>(ff => ff.Variants[0].GrossPrice),
                Order = Nest.SortOrder.Ascending,
                Nested = new MyNestedSort
                {
                    Path = Infer.Field<MyDocument>(ff => ff.Variants),
                    MaxChildren = 1,
                    Filter = new MatchAllQuery()
                }
            }
        )
    )
);   

, что дает

{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "variants.grossPrice": {
        "nested": {
          "max_children": 1,
          "filter": {
            "match_all": {}
          },
          "path": "variants"
        },
        "order": "asc"
      }
    }
  ]
}
0 голосов
/ 19 декабря 2018

Я бы сказал, это потому, что вы в основном используете max_children (с подчеркиванием), но один раз MaxChildren (без подчеркивания).

...