Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 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())));
         }
     }
 }
Ejemplo n.º 3
0
        private Union <bool, ISourceFilter> GetProjection(string[] fields)
        {
            var projection = new SourceFilterDescriptor <T>();

            projection.Includes(i => i.Fields(fields));

            return(projection);
        }
Ejemplo n.º 4
0
        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)));
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
 /// <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);
 }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
 private static SourceFilterDescriptor <EssayDocument> MakeSource(SourceFilterDescriptor <EssayDocument> src)
 {
     return(src.Includes(fd => fd.Field(ed => ed.Title)));
 }