DBAtlas · 데이터베이스 운영 아틀라스

search_context_missing_exception: No search context found for id (scroll expired) (id에 대한 search context 없음)

Elasticsearch

의미

scroll 쿼리가 사용하는 search context가 서버에 더 이상 존재하지 않는다. 보통 scroll context가 타임아웃되거나 정리된 후 저장해 둔 scroll_id로 계속 진행하려 할 때 나타난다.

원인

scroll에 지정한 keep-alive가 만료되었거나(요청 간 간격이 너무 긺), context가 수동으로 정리되었거나(clear scroll), 노드 재시작 시 context가 유실된 경우다. scroll context는 노드 메모리에 유지되므로 수명이 제한된다.

해결 방법

모든 scroll 요청에 충분한 keep-alive를 전달하고(예: scroll=5m) 페이지 간 지연을 줄인다. 최신 Elasticsearch에서는 깊은 페이지네이션에 scroll 대신 search_after + Point in Time(PIT)을 사용한다. 확장성이 더 좋고 권장되는 방법이다. 완료되면 context를 해제해(clear scroll) 메모리가 낭비되지 않도록 한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목