Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #5
0
        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));
 }
Пример #7
0
 public ITestProcess ExecuteSearch(SearchQueryItem query)
 {
     this.SearchReponse = this.searchEngine.FullTextSearch(query);
     return(this);
 }