在ElasticSearch Nest C#中查询内部记录

时间:2019-03-07 12:49:05

标签: c# elasticsearch nested nest

我有这样的结构:

public class OuterResource
{
    public int Id { get; set; }

    [Nested]
    public List<InnerResource> InnerResources { get; set; }
}

public class InnerResource
{
    public int Id { get; set; }
    public int OuterResourceId { get; set; }
    public int Value { get; set; }
}

内部记录存储为外部记录中的列表。我想查询内部记录,并提供指定的外部资源ID和值来过滤内部记录。

如何在C#Nest中进行操作?无法从文档中找出答案。

2 个答案:

答案 0 :(得分:0)

请尝试这个。

    objforOuterResource.InnerResources.Where(x => x.Id == 5);

答案 1 :(得分:0)

.Query<OuterResource>.Nested(n => n
    .Path(p => p.InnerResources)
    .Query(qq => qq
    .Terms(t => t.Fields(fi => fi.InnerResources.First().OuterResourceId ).Terms(value))
    )
)

应该工作。注意.First应用于所有数组(= list)