基于最大值的嵌套对象弹性搜索

时间:2018-09-05 03:41:21

标签: c# elasticsearch nest

我有一个简单的课程

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

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

此内容保存在Elastic中。我正在使用Nest客户端搜索Foo。我需要做的是返回Foo,但仅返回基于Bar的最新Timestamp

我正在使用Aggregations,但这只是给了我所需的Max Timestamp,但是随后我需要再次致电Elastic以获得它吗?看来这是不对的。有没有一种方法可以搜索Foo文档,但是可以嵌套对象Bar,我只想返回带有最大时间戳的文档,即列表中应该只有一个Bar它。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DisMax功能,例如

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