ElasticSearch.net分组查询
2017-04-21 16:43
1066 查看
public PUB_StockSearchResult SearchByKeyword(PUB_StockSearch param) { PUB_StockSearchResult result = new PUB_StockSearchResult(); result.ResultList = new List<ES_PUB_StockResult>(); QueryContainer query = null; QueryContainer postfilter = 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; postfilter = new TermQuery() { Field = ES_PUB_StockField.Model, Value = "sd" }; } #region /*if (!string.IsNullOrEmpty(param.Brand)) { QueryContainer query_brand = new TermQuery() { Field = "brand", Value = param.Brand.Trim() }; query = query || query_brand; postfilter = postfilter && query_brand; } if (!string.IsNullOrEmpty(param.Encapsulation)) { QueryContainer query_encapsulation = new TermQuery() { Field = "encapsulation", Value = param.Encapsulation.Trim() }; query = query || query_encapsulation; } if (!string.IsNullOrEmpty(param.BatchNo)) { QueryContainer query_batchNo = new TermQuery() { Field = "batchNo", Value = param.BatchNo.Trim() }; query = query || query_batchNo; } if (!string.IsNullOrEmpty(param.CategoryNo)) { QueryContainer query_categoryNo = new WildcardQuery() { Field = "categoryNo", Value = param.CategoryNo.Trim() + "*" }; query = query || query_categoryNo; } if (param.UpbyMemeberID > 0) { QueryContainer query_upbyMemeberID = new TermQuery() { Field = "upbyMemeberID", Value = param.UpbyMemeberID }; query = query || query_upbyMemeberID; }*/ #endregion QueryContainer query_miss = new MissingQuery() { Field = ES_PUB_StockField.SecurityDeposit }; QueryContainer query_notmiss = new TermQuery() { Field = ES_PUB_StockField.SecurityDeposit, Value = 0 }; QueryContainer query_deposit = query_miss || query_notmiss; query = query && query_deposit;/**/ int start = param.PageIndex * param.PageSize.GetValueOrDefault(); List<ISort> sortlist = new List<ISort>() { new SortField{Field=ES_PUB_StockField.ModelLength,Order=SortOrder.Ascending} }; TermsAggregation aggs = new TermsAggregation("top_tag_hits") { Field = ES_PUB_StockField.UpbyMemberID, Aggregations = new TopHitsAggregation("top_hits") { Sort = new List<ISort>() { new SortField{Field=ES_PUB_StockField.ModelLength,Order=SortOrder.Ascending}, new SortField{Field=ES_PUB_StockField.UpdateTime,Order=SortOrder.Descending} }, Size = 10 }, Size = param.PageSize }; var searchRequest = new SearchRequest<ES_PUB_Stock>(); searchRequest.Query = query; searchRequest.PostFilter = postfilter; searchRequest.Sort = sortlist; searchRequest.From = param.PageIndex * param.PageSize; searchRequest.Size = param.PageSize; searchRequest.Aggregations = aggs; var response = client.Search<ES_PUB_Stock>(searchRequest); var states = response.Aggs.Terms("top_tag_hits"); foreach (var state in states.Buckets) { var topStateHits = state.TopHits("top_hits"); var hits = topStateHits.Hits<ES_PUB_Stock>(); foreach (var item in hits.Select(p => p.Source)) { applyparam.MEMID = item.upByMemberID; ES_PUB_StockResult resultItem = FacetsHelper.FillPicSearchTempEntity(applyparam); if (resultItem == null) { continue; } resultItem = GetOneStockResult(resultItem, item); result.ResultList.Add(resultItem); } } result.Total = result.ResultList.Count; return result; }
相关文章推荐
- Elasticsearch .Net Client NEST 多条件查询示例
- ElasticSearch.net In查询
- Elasticsearch .net 客户端条件拼接查询
- ElasticSearch.net结构化查询
- elasticsearch.net一个查询问题
- Kibana+Logstash+Elasticsearch 日志查询系统 - 爱开卷360 - 博客园
- Kibana+Logstash+Elasticsearch 日志查询系统
- ASP.NET MVC 学习4、Controller中添加SearchIndex页面,实现简单的查询功能
- asp.net Linq 实现分组查询
- Kibana+Logstash+Elasticsearch 日志查询系统
- Kibana+Logstash+Elasticsearch 日志查询系统
- spring data elasticsearch的一个复杂查询条件
- asp.net Linq 实现分组查询
- Kibana+Logstash+Elasticsearch 日志查询系统
- http://www.dewen.net.cn/q/16007/mysql查询如何先排序再分组呢
- Elasticsearch——分页查询From&Size VS scroll
- ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理
- asp.net Linq 实现分组查询
- Kibana+Logstash+Elasticsearch 日志查询系统
- Kibana+Logstash+Elasticsearch 日志查询系统