I written my NEST query like below
var searchResponse = await _elasticClient.SearchAsync<T>(s => s
.Index(indexName)
.Query(q => q
.Bool(b => b
.Should(
sh => sh.Prefix(pr => pr.Field(fieldNames[0]).Value(fieldValues[0])),
sh => sh.Prefix(pr => pr.Field(fieldNames[1]).Value(fieldValues[1]))
)
))
.Aggregations(ag=>ag.Cardinality(sumName,ca=>ca.Field(cardinalField)))
.Collapse(co=>co.Field(cardinalField))
).ConfigureAwait(false);
return searchResponse.Count;
}
I need to iterate below code
sh => sh.Prefix(pr => pr.Field(fieldNames[0]).Value(fieldValues[0])),
sh => sh.Prefix(pr => pr.Field(fieldNames[1]).Value(fieldValues[1]))
as per input array
I tried like below
private static QueryContainer MatchAny<T>(QueryContainerDescriptor<T> descriptor, Field[] fields, string value) where T : class
{
QueryContainer q = new QueryContainer();
for (int i=0;i<=fields.Length-1;i++)
{
q |= descriptor.Match(t => t.Field(fields[i]).Query(value));
}
return q;
}
var searchResponse = await _elasticClient.SearchAsync<T>(s => s
.Index(indexName)
.Query(q => q
.Bool(b => b
.Should(sh=> MatchAny(sh, fieldNames, fieldValue)
)
))
).ConfigureAwait(false);
but getting compile error :
cannot convert from 'string[]' to 'Nest.Field[]'
so how to iterate fields as per coming no of inputs in NEST queries ?