У меня есть несколько объектов, хранящихся в упругом поиске, который содержит несколько списков других объектов.
Я пытаюсь выбрать объекты, в которых все вложенные объекты удовлетворяют хотя бы одному условию, из списка условий.
Большой объект, который содержит все вложенные объекты, выглядит следующим образом:
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 списках, которые я передаю в качестве параметра в запрос.
Ниже приведен пример запроса, но я хочу, чтобы все совпадения LiteralTag соответствовали из 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"))
)
)
Есть ли способ сделать это?