【问题标题】:Nested object Elastic search based on max value基于最大值的嵌套对象弹性搜索
【发布时间】:2018-09-05 11:54:06
【问题描述】:

我有一个简单的课程

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

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

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

我正在使用Aggregations,但这只是给了我需要的最大时间戳,但我需要再次调用 Elastic 来获取它?这似乎是不对的。有没有一种方法可以搜索Foo 文档但嵌套对象Bar,我只想返回具有最大时间戳的那个,即列表中应该只有一个Bar

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    你可以试试DisMax函数

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

    【讨论】:

    • 它怎么知道使用Timestamp作为比较的属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多