public SearchResult <TEntity> FullTextSearch(SearchQueryItem queryItem) { int from = ((queryItem.Pagination.Page - 1) * queryItem.Pagination.PageSize); ElasticsearchQueryContainer <TEntity> query = ElasticsearchQueryBuilder <TEntity> .Create().Build(queryItem); SortDescriptor <TEntity> sort = new SortDescriptor <TEntity>(); ISearchResponse <TEntity> response = this.client.Search <TEntity>(i => i.Index(this.aliasName ?? this.currentIndex) .Type(this.currentType) .Source(d => queryItem.Select != null? d.Includes(cc => cc.Fields(queryItem.Select)) : d) .Size(queryItem.Pagination.PageSize) .Query(q => query.Query) .Sort(s => sort) .Aggregations(agg => query.Aggregation) .Highlight(h => h.Fields(ff => ff.Field("*") .Type(HighlighterType.Plain)) .PreTags("<span class='highlight'>") .PostTags("</span>") .RequireFieldMatch(false))); SearchResult <TEntity> result = this.GetElasticSearchResult(response); return(result); }
public ElasticsearchQueryContainer <TEntity> Build(SearchQueryItem query) { ElasticsearchQueryContainer <TEntity> container = new ElasticsearchQueryContainer <TEntity>(); container.Query = this.GetQueryContainer(query); container.Aggregation = this.GetAggregation(query.Aggregations); return(container); }