es = Elasticsearch(ES_URL, http_auth=(ES_USER, ES_PW)) # Elasticsearch 서버의 주소에 맞게 수정
def fetch_all_documents(index_name):
"""인덱스의 모든 문서를 조회하여 리스트로 반환"""
data = []
page = es.search(
index=index_name,
scroll='2m', # 스크롤 타임아웃 설정
size=1000, # 페이지 당 문서 수
body={}
)
sid = page['_scroll_id']
scroll_size = page['hits']['total']['value']
total_docs = scroll_size
# 스크롤 API를 사용하여 모든 문서를 조회하면서 tqdm을 사용하여 진행 상황 표시
with tqdm(total=total_docs, desc="Fetching documents") as pbar:
while scroll_size > 0:
data.extend(page['hits']['hits'])
page = es.scroll(scroll_id=sid, scroll='2m')
# 업데이트 스크롤 ID와 스크롤 크기
sid = page['_scroll_id']
scroll_size = len(page['hits']['hits'])
pbar.update(len(page['hits']['hits']))
return data