#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))
)
)
Должно сработать. Обратите внимание на .Первая применяется ко всему массиву (= списку)