elasticsearch 검색 결과의 스캔과 스크롤

3818 단어
scan 검색 형식과 scroll API는 elasticsearch에서 대량의 문서를 얻을 수 있으며 깊이 페이지 나누기(deep pagination)의 영향을 받지 않습니다.
  • scroll 스크롤 검색은 Elasticsearch에서 더 많은 결과가 없을 때까지 대량으로 결과를 가져올 수 있도록 합니다.이것은 보기에 약간 전통 데이터베이스 cursor 와 같다.검색을 스크롤하면 스냅샷이 즉시 검색됩니다.이것은 나중에 색인에 대한 변화의 영향을 받지 않을 것이다.오래된 데이터를 유지함으로써 검색을 시작할 때의'보기'를 유지한 것으로 볼 수 있다.
  • scan 깊이 페이지를 나누는 데 가장 소모되는 자원의 부분은 결과에 대한 전체적인 정렬이다. 그러나 우리가 정렬을 닫으면 모든 문서를 되돌려줄 자원이 극히 적게 소모된다.이 경우 scan 검색 유형을 사용할 수 있습니다.scanelasticsearch는 정렬을 하지 않고 결과가 있는 모든 조각에서 다음 조각(batch)을 되돌려준다고 알려줍니다.
  • scan-and-scroll를 사용하려면 search_typescan 로 설정하는 검색 요청을 실행하고 scroll 파라미터를 전달하여 elasticsearch가 scroll을 얼마나 개방해야 하는지 알려 줍니다.
    GET /old_index/_search?search_type=scan&scroll=1m ...(1)
    {
        "query": { "match_all": {}},
        "size": 1000
    }
  • (1)scroll을 1분간 개방
  • 이 요청에 대한 반응은 명중hits를 포함하지 않지만, 64비트의 문자열 인코딩을 포함합니다.현재 우리는 _scroll_id 검색 결과의 첫 번째 부분을 _scroll_id 에 전달할 것이다.
    GET /_search/scroll?scroll=1m                                             ...(1)
    c2Nhbjs1OzExODpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExOTpRNV9aY1VyUVM
    4U0NMd2pjWlJ3YWlBOzExNjpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExNzpRNV9
    aY1VyUVM4U0NMd2pjWlJ3YWlBOzEyMDpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzE
    7dG90YWxfaGl0czoxOw==                                                     ...(2)
  • (1)scroll을 1분만 더 개방합니다 |
  • (2)_search/scrollbody, URL 또는query 매개 변수를 통해 전달할 수 있음
  • 우리가 여기에 또 지정한 것을 알아차렸다 _scroll_id.이 scroll 종료 시간은 우리가 scroll 요청을 실행할 때마다 갱신됩니다. 따라서 현재 결과의 일괄 처리를 위한 충분한 시간을 주십시오. 모든 일치하는 문서가 아니라.
    이 scroll의 응답은 첫 번째 결과를 포함합니다.비록 우리가 ?scroll=1msize 로 지정했지만, 우리는 더 많은 문서를 얻었다.scan에 있을 때 1000 각 조각에 작용하기 때문에 최대 size 문서를 얻을 수 있습니다.
    주의: scroll 요청도 새 size * number_of_primary_shards 로 되돌아옵니다.매번 우리가 다음 scroll 요청을 할 때마다 우리는 이전 scroll 요청 _scroll_id 을 전달해야 한다.
    만약 더 많은 명중이 없다면, 우리는 모든 일치하는 문서를 처리할 것이다.
    주의: 일부 official Elasticsearch clients는 scan-and-scroll 도움말을 제공하여 사용하기 쉬운 봉인을 제공합니다.
    작성자: Not_GOD
    링크:http://www.jianshu.com/p/098896664bf7
    출처: 약서
    저작권은 작가의 소유이다.상업 전재는 작가에게 연락하여 권한을 얻으십시오. 비상업 전재는 출처를 밝히십시오.

    좋은 웹페이지 즐겨찾기