I know I can do a nested path search when I want to search for just one value using the following code:
.Query(q => q
.Nested(n => n
.Path(p => p.memberships)
.Query(q2 => q2
.Bool(b => b
.Should(s2 => s2
.Match(m => m.Field("memberships.Id").Query("20334089"))))))))
That works fine. I am trying to do a query based off of a list of strings as the field values. I am using this TermAny function based off this previous answer and thought it may have worked with this for a nested path query:
https://stackoverflow.com/a/36377068/1451776
private static QueryContainer TermAny<T>(QueryContainerDescriptor<T> descriptor, Field field, object[] values) where T : class
{
QueryContainer q = new QueryContainer();
foreach (var value in values)
{
q |= descriptor.Term(t => t.Field(field).Value(value));
}
return q;
}
Let's say I have a list of Ids in a string array myIDSArry and I want to use that to search in a nested path field called memberships in elasticsearch. I have tried this
.Query(q => q
.Nested(n => n
.Path(p => p.memberships)
.Query(q2 => q2
.Bool(b => b
.Should(s => TermAny(s, "memberships.Id", myIDSArry)))))))
However it comes back as 0 hits and I know there should be some in the results. Any ideas on how I can use this based off a list of strings to search?