public async Task <ICollection <Shakespeare> > Search(IElasticSearchFilter filters) { SetConnectionSettings(); await EnsureConnected().ConfigureAwait(false); var result = await Client.SearchAsync <Shakespeare>(s => Selector(s, filters)).ConfigureAwait(false); return(result.Documents.ToList()); }
private ISearchRequest Selector(SearchDescriptor <Shakespeare> arg, IElasticSearchFilter filter) { var descriptor = arg.Query(q => q.Bool(b => { var musts = new List <Func <QueryContainerDescriptor <Shakespeare>, QueryContainer> >(); musts.Add(m => m.MatchPhrase(x => x.Field(f => f.Speaker) .Query("cornelio") .Boost(filter.GetSearchBoost(nameof(Shakespeare.Speaker))))); return(b.Must(musts)); })); return(descriptor); }