/// <summary> /// 分页查询,只返回文档信息(异步) /// </summary> /// <param name="query">查询条件</param> /// <param name="sort">排序规则</param> /// <param name="fields">返回字段</param> /// <param name="from">记录开始</param> /// <param name="size">记录数</param> /// <returns></returns> public async Task <IEnumerable <T> > GetDocumentsAsync(QueryContainer query, SortDescriptor <T> sort, SourceFilterDescriptor <T> fields, int from = 0, int size = 10) { var queryResult = await PagingQueryAsync(query, sort, fields, null, from, size); return(queryResult.Documents); }
private static ISourceFilter GetSourceFilter(SourceFilterDescriptor <Person> sr, SearchParam p) { if (p.isInclude) { if (p.sources == null || p.sources.Count == 0) { return(sr.ExcludeAll()); } else { return(sr.Includes(inc => inc.Fields(p.sources.Select(s => s.ToString()).ToArray()))); } } else { if (p.sources == null || p.sources.Count == 0) { return(sr.IncludeAll()); } else { return(sr.Excludes(exc => exc.Fields(p.sources.Select(s => s.ToString()).ToArray()))); } } }
private Union <bool, ISourceFilter> GetProjection(string[] fields) { var projection = new SourceFilterDescriptor <T>(); projection.Includes(i => i.Fields(fields)); return(projection); }
public ISourceFilter GetSource(SourceFilterDescriptor <T> sr, QueryDes qd) { if (qd.Srcs == null || qd.Srcs.Count == 0) { return(qd.IsInclude ? sr.ExcludeAll() : sr.IncludeAll()); } var arr = qd.Srcs.Select(fld => fld.ToString()).ToArray(); return(qd.IsInclude ? sr.Includes(f => f.Fields(arr)) : sr.Excludes(f => f.Fields(arr))); }
/// <summary> /// 构建返回字段过滤器 /// </summary> /// <param name="fields">字段投影</param> /// <returns></returns> public SourceFilterDescriptor <T> BuildFields(SearchSourceFilter fields) { if (fields == null) { return(null); } var fieldDesc = new SourceFilterDescriptor <T>() .IncludeAll(); if (fields.Excludes != null && fields.Excludes.Count > 0) { fieldDesc = fieldDesc.Excludes(ec => ec.Fields(fields.Excludes.ToArray())); } if (fields.Includes != null && fields.Includes.Count > 0) { fieldDesc = fieldDesc.Includes(ic => ic.Fields(fields.Includes.ToArray())); } return(fieldDesc); }
/// <summary> /// 分页查询,只返回文档信息 /// </summary> /// <param name="query">查询条件</param> /// <param name="sort">排序规则</param> /// <param name="fields">返回字段</param> /// <param name="from">记录开始</param> /// <param name="size">记录数</param> /// <returns></returns> public IEnumerable <T> GetDocuments(QueryContainer query, SortDescriptor <T> sort, SourceFilterDescriptor <T> fields, int from = 0, int size = 10) { return(PagingQuery(query, sort, fields, null, from, size).Documents); }
/// <summary> /// 分页查询(异步) /// </summary> /// <param name="query">查询条件</param> /// <param name="sort">排序规则</param> /// <param name="fields">返回字段</param> /// <param name="aggs">聚合条件</param> /// <param name="from">记录开始</param> /// <param name="size">记录数</param> /// <returns></returns> public async Task <ISearchResponse <T> > PagingQueryAsync(QueryContainer query, SortDescriptor <T> sort, SourceFilterDescriptor <T> fields, AggregationContainerDescriptor <T> aggs, int from = 0, int size = 10) { var result = await Client.SearchAsync <T>(s => BuildSearchDescriptor(query, sort, fields, aggs, from, size)); result.ThrowIfIsNotValid(); return(result); }
private static SourceFilterDescriptor <EssayDocument> MakeSource(SourceFilterDescriptor <EssayDocument> src) { return(src.Includes(fd => fd.Field(ed => ed.Title))); }