2017-06-01 28 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); 
       }