使用所有必须符合条件的嵌套对象来匹配文档

时间:2019-04-25 17:01:17

标签: c# elasticsearch nest

我在弹性搜索中存储了一些对象,其中包含一些其他对象的列表。

我正在尝试从条件列表中获取所有嵌套对象至少满足一个条件的对象。

包含所有嵌套对象的大对象看起来像这样:

public  class TagSearch
{
    public List<SimpleValueTagMatch> SimpleValueTagMatches { get; set; }

    public List<LiteralTagMatch> LiteralTagMatches { get; set; }

    public List<NumericValueTagMatch> NumericValueTagMatches { get; set; }

    public List<DateTimeTagMatch> DateTimeTagMatches { get; set; }
}

嵌套对象看起来像这样:

public class LiteralTagMatch
{
    public string Name { get; set; }
}

或者这样:

public class SimpleValueTagMatch
{
    public string Name { get; set; }

    public string Value { get; set; }
}

我要搜索所有嵌套对象至少匹配一个条件的所有TagSearch对象。

在使用LiteralTagMatch对象的情况下,条件是将名称包含在一个名称列表中,并将其作为参数传递给查询。

在使用SimpleValueTagMatch的情况下,名称和值均在2个列表中找到,我将它们作为参数传递给查询。

贝洛(Bellow)是一个示例查询,但是我希望所有LiteralTagMatches都可以通过TagSearch进行匹配:

        var results = client.Search<TagSearch>(s => s
        .Query(q => q
            .Nested(n => n
                .Path(p => p.LiteralTagMatches).Query(q2 => q2.Term(e => e.LiteralTagMatches.First().Name, "asda"))
            )
        )

有没有办法做到这一点?

0 个答案:

没有答案