2014-04-11 3 views
0

이름, 범주, 위치 열이있는 SQL 테이블이 있습니다. 나는 탄성 검색을 NEST과 함께 사용하고 있습니다. 내이 같은 쿼리 이름을 가진 기록이있는 경우여러 매개 변수가있는 NEST를 사용한 탄성 검색

var result = client.Search<Models.Search.Poll>(s => s.Query(q => q.Fuzzy(f => f.OnField(p => p.Name).Value(query)))))); 

그래서 = "우리는 여기에"와 사용자 검색은 결과를 반환, "있다".

는 지금이 쿼리에 둘 개 이상의 매개 변수의 종류와 위치를 추가해야합니다

var result = client.Search<Models.Search.Poll>(s => s.Query(q => q.Fuzzy(f => f.OnField(p => p.Name).Value(query).OnField(r => r.Category).Value(category)))); 

을하지만 지금은 쿼리 필드 작동하지 않습니다 :

그래서이처럼했다. 하지만 지금은 카테고리와 함께 작동합니다.

StatusCode: OK, 
    Method: POST, 
    Url: http://server.abc.com:9200/pollit-dev/polls/_search, 
    Request: { 
    "query": { 
    "fuzzy": { 
     "category": { 
     "value": "Select a Category" 
     } 
    } 
    } 
}, 
    Response: {"took":2892,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}} 

내가 잘 하나를 시도 :

var result = client.Search<Models.Search.Poll>(s => s.MatchAll().Query(q => q.Term(p => p.Name, query) || q.Term(p => p.Category,category) || q.Term(p => p.Location, Location) 

하지만 운이 지금까지 여기에 내가 이름을 입력하지만 카테고리를 선택 해달라고 할 때 내가 무엇을 얻을 수 있습니다.

감사합니다, 아시프 하미드는

답변

0

당신은 여러 옵션이 있습니다. 첫 번째 것은 거의 당신과 비슷하지만 Bool 상태를 사용해야합니다.

var result = client.Search<Models.Search.Poll>(s => s 
     .MatchAll() 
     .Query(q => q 
     .Bool(b => b 
      .Must(m => m.Term(p => p.Name, query) || m.Term(p => p.Category,category) || m.Term(p => p.Location, Location)) 
     ) 
     ) 
    ); 

또 다른 옵션은 queryContainers를 사용하는 것입니다. 이 같은 것 :

var result = _Instance.Search<Models.Search.Poll>(q => q 
       .Query(qq => 
       { 
        QueryContainer termQuery = null; 
        QueryContainer locationQuery = null; 
        QueryContainer categoryQuery = null; 

        termQuery = qq.Term(p => p.Name, query); 
        categoryQuery = qq.Term(p => p.Category,category); 
        locationQuery = qq.Term(p => p.Location, Location); 

        return termQuery || categoryQuery || locationQuery; 
        }) 
      ); 

또한 QueryContainers를 정교하게 만들고 여러 검색 매개 변수를 추가 할 수 있습니다. 희망이 도움이됩니다. 좋은 하루!

관련 문제