我有一个简单的课程
public class Foo
{
public List<Bar> Bars {get;set;}
}
public class Bar
{
public DateTime Timestamp {get;set;}
}
这保存在Elastic中。我正在使用Nest客户端搜索Foo
。我需要做的是返回Foo
s,但只返回基于Bar
的最新Timestamp
。
我正在使用Aggregations
,但这只是给了我最大时间戳,我需要但是然后我需要另外调用Elastic来获取它?这似乎是不对的。有没有办法我可以搜索Foo
文件,但嵌套对象Bar
,我只想返回一个具有最大时间戳的那个,即List应该只有一个Bar
。
您可以尝试使用DisMax功能
var res = await _client.SearchAsync<Foo>(s => s
.Query(q => q
.Bool(b => b
.Must(
mu => mu.DisMax(d => d.Name("Bars"))))));