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); }
private SearchResult <object> ExecuteSearch(string indexName, string type, SearchQueryItem query) { var result = searchEngine.SetIndexName(indexName) .SetType(type) .FullTextSearch(query); return(result); }
public SearchResult <object> GetDefaultFilter(string indexName, string type, string appname) { SearchQueryItem query = new SearchQueryItem(); query.Pagination = new PagingParameter() { Page = 1, PageSize = 1 }; query.Filters.Add(new CustomFilter() { Name = "_id", Value = appname }); return(this.ExecuteSearch(indexName, type, query)); }
private QueryContainer GetQueryContainer(SearchQueryItem queryItem) { QueryContainer container = null; if (queryItem.Filters != null && queryItem.Filters.Count() > 0) { queryItem.Filters.ForEach((filter) => { var currentContainer = queryBuilder[filter.Operation].Invoke(filter.Name, filter.Value); if (filter.Condition == Conditions.AND) { container = container == null ? currentContainer : container && currentContainer; } else { container = container == null ? currentContainer : container || currentContainer; } }); } this.AddFulltextQuery(ref container, queryItem.Fulltext); return(container); }
public SearchResult <object> Post(string indexName, string type, [FromBody] SearchQueryItem query) { return(this.ExecuteSearch(indexName, type, query)); }
public ITestProcess ExecuteSearch(SearchQueryItem query) { this.SearchReponse = this.searchEngine.FullTextSearch(query); return(this); }