Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NEST: Update source filter

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?

like image 385
Magnus O. Avatar asked Dec 11 '25 04:12

Magnus O.


1 Answers

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());
    }
    ...
}
like image 119
Magnus O. Avatar answered Dec 13 '25 16:12

Magnus O.