2016-06-22 2 views
0

NEST 2.3.2를 사용하여 많은 양의 문서를 검색하는 방법을 찾으려고합니다. 응답 (서버 관리자가 설정)의 문서 수에는 제한이 있으므로 Scroll을 사용하여 안전하게 사용하고 싶습니다.NEST를 사용하여 Elasticsearch에서 알 수없는 양의 문서 검색

나는 this을 읽었지만 NEST 2.3.2 라이브러리를 사용하여이를 달성하는 방법을 찾지 못했습니다. 이 documentation은 1.x 용이며 2.x에서는 작동하지 않습니다. 나는 SearchRequestSearchType = Elasticsearch.Net.SearchType.Scan을 설정하려고하면

는 특히, 자동 /_search?search_type=scan에 요청을 보내고 서버는 이유만으로 "search_phase_execution_exception"반환 "스캔 할 때 스크롤이 제공되어야합니다 ...". 하지만 스크롤 ID를 얻는 방법을 모르겠습니다.

누구든지 이것을 달성하는 방법을 알고 있습니까? 여러 문서가 모두 검색 될 때까지 여러 문서로 스크롤 할 수 있습니다. 누구든지 매우 도움이 될 몇 가지 샘플 코드를 제공 할 수 있다면. 고맙습니다.

답변

2

모든 문서를 색인화 한 다음 일부 처리를 수행해야하는 내 문제에 대해 이와 같은 방법을 시도했습니다. 나는 두루마리를 사용했다. 당신은 here

var scanResults = client.Search<IndexName>(s => s 
       .From(0) 
       .Size(20) //any size you can give 
       .MatchAll() 
       .Source(so => so 
       .Include(fi => fi.Field(fieldName)) 
       .SearchType(Elasticsearch.Net.SearchType.Scan) 
       .Scroll("5m") //time for which the scrollId is saved. Can be anything. 
      ); 

      var results = client.Scroll<IndexName>("10m", scanResults.ScrollId); 

      while (results.Documents.Any()) 
      { 
       //do whatever you want to do from the resultant documents 

       results = client.Scroll<IndexName>("10m", results.ScrollId); 
      } 

대한 자세한 내용이 도움에 대한 scroll

희망에서 내 질문을 볼 수있다.

+1

답장을 보내 주셔서 감사합니다. 글쎄, 나는 일반 텍스트 버전을보고 NEST API의 매개 변수를 추측하여 알아 냈다. 핵심은'SearchRequest' 객체에'Scroll' 속성을 설정하고'Search' 메소드에 넘기는 것입니다. 'Scroll '이 비어 있지 않은 값으로 설정되면, id를 생성합니다. 나는 아직도 세부 사항을 파악할 필요가있다. 그러나 나는 그것이 일해야한다고 생각한다. – LLS

+0

도움이 될지 확인해보십시오. – ASN

관련 문제