2017-06-01 70 views
0

您好我可以使用DateRangeQuery數組填充QueryContainer,如下所示QueryContainer marriageDateQuerys = null;Nest QueryContainer用法

 if (!string.IsNullOrEmpty((item.marriage_date))) 
      { 
       DateRangeQuery query = new DateRangeQuery(); 
       query.Field = "marriages.marriage_date"; 
       query.Name = item.marriage_date; 
       query.GreaterThanOrEqualTo = item.marriage_date; 
       query.LessThanOrEqualTo = item.marriage_date; 

       marriageDateQuerys &= query; 
      } 

但是,當我使用QueryContainer使用MatchQuery/TermQuery來填充數據時,它不會發生。

  QueryContainer marriageSpouseFirstNameQuerys = null; 


      if (!string.IsNullOrEmpty((item.spouse_first_name))) 
      { 
       MatchQuery query = new MatchQuery(); 
       query.Field = "marriages.spouse_first_name"; 
       query.Name = item.spouse_first_name; 
       marriageSpouseFirstNameQuerys &= query; 
      } 

查詢對象是在last if條件中創建的,但marriageSpouseFirstNameQuerys沒有填充相同的。我甚至試過marriageSpouseFirstNameQuerys + = query;但沒有任何成功

回答

1

沒有嘗試,但你可以嘗試這樣的

   Query = new QueryContainer(new BoolQuery 
        { 
         Must = new List<QueryContainer> 
         { 
          new MatchQuery 
          { 
           //props 
          }, 
          new TermQuery 
          { 
           Field = field 
           Value = value 
          }, 
         } 
        }) 
+0

會嘗試,看看以後怎麼爲我工作它去 – Sushil

+1

我用你的代碼,並做了一些更改,使其爲我的需求工作 – Sushil

0

東西下面的代碼更改與eyildiz答案

 if (!string.IsNullOrEmpty((item.spouse_last_name))) 
       { 
        marriageSpouseLastNameQuery = new QueryContainer(
         new MatchQuery 
         { 
          Field = "marriages.spouse_last_name", 
          Query = item.spouse_last_name 
         }); 
        lstmarriageSpouseLastNameQuerys.Add(marriageSpouseLastNameQuery); 
       }