Elasticsearch .Net Client NEST 多條件查詢示例


Elasticsearch .Net Client NEST 多條件查詢示例

交流

Elasticsearch.Net、NEST 交流群:523061899

/// <summary>
    /// 多條件搜索例子
    /// </summary>
    public class WheresQuerDemo
    {

        public class WhereInfo
        {
            public int venId { get; set; }
            public string venName { get; set; }

        }

        /// <summary>
        /// 
        /// </summary>
        public static void Search()
        {
            ElasticClient client = NestDemos.CreateClient();

            var result=client.Search<VendorPriceInfo>(CreateSearchRequest(new WhereInfo()));
        }
        /// <summary>
        /// searchRequest 生成
        /// </summary>
        /// <param name="where"></param>
        /// <returns></returns>
        public static Func<SearchDescriptor<VendorPriceInfo>, ISearchRequest> CreateSearchRequest(WhereInfo where)
        {
            //querys
            var mustQuerys=new List<Func<QueryContainerDescriptor<VendorPriceInfo>, QueryContainer>>();
            if (where.venId > 0)
            {
                mustQuerys.Add(t => t.Term(f => f.vendorID, where.venId));
            }

            //filters
            var mustFilters = new List<Func<QueryContainerDescriptor<VendorPriceInfo>, QueryContainer>>();
            if (!string.IsNullOrEmpty(where.venName))
            {
                mustFilters.Add(t => t.MatchPhrase(f => f.Field(fd => fd.vendorName).Query(where.venName)));
            }

            Func<SearchDescriptor<VendorPriceInfo>, ISearchRequest> searchRequest = r => 
                r.Query(q =>
                            q.Bool(b =>
                                        b.Must(mustQuerys)

                                        .Filter(f => 
                                                    f.Bool(fb =>
                                                        fb.Must(mustFilters))
                                                )
                                   )
                        );

            return searchRequest;
        }


    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM