Запрашивать внутренние записи в ElasticSearch Nest C#

#c# #elasticsearch #nested #nest

#c# #elasticsearch #вложенный #гнездо

Вопрос:

У меня такая структура:

 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; }
}
  

Внутренние записи хранятся в виде списков внутри внешних записей. Я хочу запросить внутренние записи, указав указанный идентификатор внешнего ресурса и значение для фильтрации внутренних записей.

Как это сделать в C # Nest? Не могу понять это из документации.

Комментарии:

1. Чтобы быть более точным, я хочу запросить их с помощью запроса Elasticsearch в nest, а не запроса linq к объектам c # 🙂

Ответ №1:

Пожалуйста, попробуйте это.

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

Комментарии:

1. Чтобы быть более точным, я хочу запросить их с помощью запроса Elasticsearch в nest, а не запроса linq к объектам c # 🙂

Ответ №2:

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

Должно сработать. Обратите внимание на .Первая применяется ко всему массиву (= списку)