Вложенный объект Эластичный поиск по максимальному значению - PullRequest
0 голосов
/ 05 сентября 2018

у меня простой класс

public class Foo 
{
   public List<Bar> Bars {get;set;}
}

public class Bar
{
   public DateTime Timestamp {get;set;}
}

Сохраняется в Elastic. Я использую клиент Nest для поиска Foo. Что мне нужно сделать, это вернуть Foo с, но вернуть только самые последние Bar на основе Timestamp.

Я использую Aggregations, но это просто дает мне максимальную метку времени, которая мне нужна, но затем мне нужно сделать еще один вызов в Elastic, чтобы получить ее? Кажется, что это не правильно. Есть ли способ, которым я могу искать документ Foo, но вложенный объект Bar, я хочу вернуть только тот, который имеет максимальную временную метку, т. Е. В списке должен быть только один Bar.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете попробовать с функцией DisMax, как

var res = await _client.SearchAsync<Foo>(s => s
                                    .Query(q => q
                                        .Bool(b => b
                                            .Must(
                                                mu => mu.DisMax(d => d.Name("Bars"))))));
...