我有一个简单的课程
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
它。
答案 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"))))));