반응형
엘라스틱서치를 Python으로 연동하면서 사용하고 있는데 갑자기 아래와 같은 에러가 발생하였다.
에러 메시지 내용
elasticsearch.BadRequestError: BadRequestError(400, 'search_phase_execution_exception', 'Result window is too large, from + size must be less than or equal to: [10000] but was [10005].
에러 원인
에러의 원인은 요청한 Index에 결과가 1만건 이상이기 때문에 발생한 것으로써 index.max_result_window 임계치를 넘어갔기 때문에 발생한 것이다. max_result_window의 기본 설정은 1만건이다.
임시 해결 조치 방법
시간이 없을 때 일단 빠르게 해결 할 수 있는 방법은 문제가 발생한 Index에 대해 windows size를 늘리는 것이다.
기본 설정 값인 10000건에서 그 이상으로 늘리면 된다. 참고로 아래는 5만건으로 늘려 주었다
아래 코드는 Kibana > Dev Tools에서 실행 가능한 코드
PUT /<your index name>/_settings
{
"max_result_window" : 50000
}
영구 해결 방법
영구 해결 방법으로 가장 좋은 방법은 Scroll API를 사용하는 것 입니다.
Scroll API는 대량의 데이터를 효율적으로 검색할 때 사용하면 좋습니다.
# 검색할 인덱스와 쿼리 정의
index_name = "your_index_name"
query = {
"query": {
"match_all": {} # 모든 문서를 검색하는 쿼리
}
}
# Scroll 초기화
scroll_timeout = "2m" # Scroll 세션 유지 시간
batch_size = 1000 # 한 번에 가져올 문서 수
# 첫 번째 Scroll 요청
response = es.search(index=index_name, body=query, scroll=scroll_timeout, size=batch_size)
이 글을 통해 문제가 해결 되셨기를 바랍니다^^
caul334@gmail.com
내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!
반응형
'IT > General' 카테고리의 다른 글
[Solved] Visual Studio - "빌드 오류가 발생했습니다. 계속하고 마지막으로 성공한 빌드를 실행하시겠습니까?" 에러 (0) | 2024.12.17 |
---|---|
[Java] OpenJDK 설치 방법 공유 (on Windows) (0) | 2024.12.03 |
[IT] 회사 내부 업무망 이용하면서 동시에 외부 인터넷망을 이용하는 방법 (0) | 2024.12.02 |
Adobe(포토샵) 취소 수수료 없이 서비스 구독 해지하는 방법 (1212) | 2023.04.22 |
[Splunk] 우분투에 스플렁크 최신 버전 설치 방법 on Ubuntu(Linux) (358) | 2022.03.16 |