ELK

특정 인덱스에 모든 도큐먼트 조회(python)

25G 2024. 2. 5. 14:26
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

'ELK' 카테고리의 다른 글

Logstash 란?  (2) 2023.11.06
엘라스틱 서치 - 집계 정리  (0) 2023.11.06
엘라스틱 서치 검색 정리  (2) 2023.11.06
엘라스틱 스택  (0) 2023.11.06
ElasticSearch 색인/검색 동작과정  (0) 2023.06.11