2017-04-21 1 views
0

아래의 DSL 쿼리를 .net NEST 쿼리로 변환하려고하는데, elasticsearch 버전 5.2를 사용하고 있습니다.DSL 쿼리에서 .net Nest 쿼리

{ 
    "size": 10, 
    "from": 0, 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "multi_match": { 
      "query": "finished", 
      "fields": [ 
       "title", 
       "content" 
      ] 
      } 
     } 
     ], 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "applianceTypeId": "2a682cf7-5fe3-470f-81b2-a74e00ec7c9d" 
       } 
      }, 
      { 
       "term": { 
       "applianceCategoryId": "bde32268-b62f-45cc-8d7d-a74a00d61476" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

지금까지 아래 내용이 있지만 여러 용어를 처리하는 데 문제가 있습니다. 아무도 내가 누락 된 조언을 할 수 있습니까? 문제는 applianceTypeIdapplianceCategoryId 쿼리를 결합하는 방법 경우

 var result = client.Search<AdviceSearchDocument>(x => x 
           .From(page -1) 
           .Size(10) 
           .Query(q => q 
            .Bool(b => b 
             .Must(m => m 
              .MultiMatch(mm => mm 
               .Query(query) 
               .Fields(f => f 
                .Fields(f1 => f1.Title, f1 => f1.Content)))) 
              .Filter(f => f 
               .Bool(b1 => b1 
                .Must(m1 => m1 
                 .Term(t =>t 
                   .Field(fl =>fl.ApplianceTypeId) 
                   .Value(applicanceTypeId) 
                   ) 

                  )))))); 
+1

서면 질의에 대한 문서를 살펴 (https://www.elastic.co/guide을 가지고있다 /en/elasticsearch/client/net-api/current/writing-queries.html) 및 부울 쿼리 작성 (https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool- queries.html). 거기에 정보가 상당히 많아서 도움이 될 것 같아. –

답변

0

, 여기에 솔루션

var result = client.Search<AdviceSearchDocument>(x => x 
    .From(0) 
    .Size(10) 
    .Query(q => q 
     .Bool(b => b 
      .Must(m => m 
       .MultiMatch(mm => mm 
        .Query(query) 
        .Fields(f => f 
         .Fields(f1 => f1.Title, f1 => f1.Content) 
        ) 
       ) 
      ).Filter(f => f 
       .Term(t => t 
        .Field(fl => fl.ApplianceTypeId) 
        .Value(applicanceTypeId) 
       ) & f.Term(t => t 
        .Field(fl => fl.ApplianceCategoryId) 
        .Value(applianceCategoryId) 
       ) 
      ) 
     ) 
    ) 
);