您的位置:首页 > 其它

ElasticSearch.net结构化查询

2017-04-21 16:39 525 查看
ES_PUB_Stock这个类型定义先看之前写的文章,

以下直接列出查询方法。

public PUB_StockSearchResult Search(PUB_StockSearch param)

        {

            PUB_StockSearchResult result = new PUB_StockSearchResult();

            result.ResultList = new List<ES_PUB_StockResult>();

            QueryContainer query = null;

            if (!string.IsNullOrEmpty(param.Model))

            {

                QueryContainer query_model = new WildcardQuery() { Field = ES_PUB_StockField.Model, Value = param.Model.Trim().ToUpper() + "*" };

                query = query && query_model;

            }

            if (!string.IsNullOrEmpty(param.CategoryNo))

            {

                QueryContainer query_categoryNo = new WildcardQuery() { Field = ES_PUB_StockField.CategoryNo, Value = param.CategoryNo.Trim() + "*" };

                query = query && query_categoryNo;

            }

            if (param.UpbyMemberID > 0)

            {

                QueryContainer query_UpbyMemeberID = new WildcardQuery() { Field = ES_PUB_StockField.UpbyMemberID, Value = param.UpbyMemberID };

                query = query && query_UpbyMemeberID;

            }

            if (param.PageIndex < 1)

            {

                param.PageIndex = 1;

            }

            int start = (param.PageIndex - 1) * param.PageSize.GetValueOrDefault();

            if (query == null || start + param.PageSize > 10000)

            {

                return result;

            }

            List<ISort> sortlist = new List<ISort>()

            {

                new SortField{Field=ES_PUB_StockField.ModelLength,Order=SortOrder.Ascending},

                new SortField{Field=ES_PUB_StockField.UpdateTime,Order=SortOrder.Descending}

            };

            var searchRequest = new SearchRequest<ES_PUB_Stock>();

            searchRequest.Query = query;

            searchRequest.Sort = sortlist;

            searchRequest.From = start;

            searchRequest.Size = param.PageSize;

            var response = client.Search<ES_PUB_Stock>(searchRequest);

            result.Total = response.Total;

            foreach (var item in response.Hits.Select(p => p.Source))

            {

                MEM_ApplyInfo applyparam = new MEM_ApplyInfo();

                applyparam.MEMID = item.upByMemberID;

                ES_PUB_StockResult resultItem = FacetsHelper.FillPicSearchTempEntity(applyparam);

                if (resultItem == null)

                {

                    continue;

                }

                resultItem = GetOneStockResult(resultItem, item);

                result.ResultList.Add(resultItem);

            }

            return result;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: