I have a method that takes a query as parameter like:
public ISearchResponse<Object> SearchComponent(SearchDescriptor<Object> query)
{
...
}
In this query I want to add a source filter like:
public ISearchResponse<Object> SearchComponent(SearchDescriptor<Object> query)
{
query = query.Source(sf =>
sf.Exclude(e => e
.Field("SomeField")
));
...
}
But what happens if the query already have a source filter? This filter will override that filter right? How can I update the existing queries source filter?
This seems to work but it's not the most beautiful solution. Anyone that can come up with a better alternative?
public ISearchResponse<Object> SearchComponent(ISearchRequest query)
{
var excludeFields = new List<string>();
excludeFields.Add("SomeField");
if (query.Source == null)
{
query.Source = new SourceFilter {Include = "*", Exclude = excludeFields.ToArray()};
}
else if (query.Source.Exclude == null)
{
query.Source.Exclude = excludeFields.ToArray();
}
else
{
query.Source.Exclude.And(excludeFields.ToArray());
}
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With