Elastic scrollAPI와 search After API 차이

ELK|2023. 4. 7. 13:50
728x90

회사에서 일하다가 용도를 해깔려 하는 사람들이 있길래 내가 만든건 아니고 회사 후배가 주로 작성 했다.

기록용으로 남겨둔다.

 

  Scroll API Search After
사용 일정시간 검색 컨텍스트(Scroll ID)를 유지하며 대량의 검색 결과를 처리 이전 페이지의 가장 마지막 문서를 기준으로 다음 페이지의 결과를 처리
장점 -       Scroll ID를 사용하여 대량의 검색 결과를 페이징 처리할 수 있다.
-       Search After 대비 검색시간이 오래 걸려도 문제가 되지 않는다.
-       Scroll ID를 유지하지 않아 메모리 부하가 적다.
-       검색 중 다른 검색을 수행할 수 있다.
단점 -       Scroll ID를 유지하기 때문에 메모리 부하가 생길 수 있다.
-       Scroll ID를 유지하면서 다른 검색을 수행할 수 없다.
-       메모리 오버헤드는 낮지만, 속도가 상대적으로 느리다.
-       정렬 기준을 바꾸거나, 다른 필드를 사용하여 검색하는 것이 어렵다.
쿼리문 POST /my-index/_search?scroll=1m
{
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    }
}
POST /my-index/_search?size=10
{
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    },
    "sort": [
        { "date": "desc" },
        "_doc"
    ],
    "search_after":[1463538857,"654323"]
}
결론 대량의 검색 결과를 처리하고, 검색 결과를 즉시 사용하지 않아도 되는 경우에 적합 ( 검색한 데이터 전체를 저장 하는 용도 등등 ) 대량의 검색 결과를 빠르게 페이징 처리하고, 검색 결과를 즉시 사용해야 하는 경우에 적합
레퍼런스 https://www.elastic.co/guide/en/elasticsearch/reference/current/scroll-api.html https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html
비고   ES 공식 문서에서 스크롤API 대비 Search After API사용 권장

댓글()