ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Elasticsearch: BULK란?
    Search & AI/Elasticsearch 2025. 3. 27. 09:56
    반응형

    🚀 Elasticsearch의 Bulk API란?

    📌 정의

    Bulk API는 여러 개의 요청(문서 생성, 수정, 삭제 등)을 한 번의 HTTP 요청으로 묶어서 처리할 수 있는 기능입니다.

    ✅ "많은 문서를 빠르게 처리"하고 싶을 때 사용하는 대표 기능!

     

    🤔 왜 Bulk이 필요할까?

    일반적인 방식:

    POST /index/_doc/1
    POST /index/_doc/2
    POST /index/_doc/3 ...

    → 각 요청마다 네트워크 통신과 인덱싱 오버헤드가 발생

    Bulk 방식:

    POST /_bulk { "index": { "_index": "my_index", "_id": "1" } }
    { "title": "algo", "professor": "kim" }
    { "index": { "_index": "my_index", "_id": "2" } }
    { "title": "db", "professor": "lee" } ...
    한 번에 묶어서 전송 → 훨씬 빠르고 리소스 절약됨

     

    🛠️ 사용법: curl 예제

    curl -XPOST "http://localhost:9200/_bulk" \
      -H "Content-Type: application/json" \
      --data-binary @data.json

     

    📄 data.json 예시 (주의: JSON 배열이 아님, 줄바꿈된 단일 JSON 라인들):

    { "index": { "_index": "classes", "_id": "1" } }
    { "title": "algorithm", "professor": "kim" }
    { "index": { "_index": "classes", "_id": "2" } }
    { "title": "network", "professor": "lee" }
    { "delete": { "_index": "classes", "_id": "3" } }
    { "update": { "_index": "classes", "_id": "4" } }
    { "doc": { "professor": "choi" } }

     

    🧠 지원하는 작업 종류

     

    ⚠️ 주의할 점

    • 줄바꿈(\n) 필수! → 각 줄은 하나의 명령 또는 문서여야 함.
    • JSON 배열([]) 형태로 감싸면 ❌ 에러 발생
    • 요청 크기는 너무 크면 안 됨 → 권장: 5~15MB 단위
    • 결과 응답에서 각 문서의 성공/실패 여부를 반드시 확인해야 함

    ✅ 실무 팁

    • 데이터 마이그레이션, 로그 적재, 크롤링 데이터 입력 등에 필수
    • 파일 처리 시 --data-binary 사용해야 줄바꿈이 유지됨
    • 실패 문서만 재전송할 수 있도록 errors 필드를 체크하는 로직을 추천

     

    📚 마무리 요약

     

    반응형

    'Search & AI > Elasticsearch' 카테고리의 다른 글

    Elasticsearch란?  (0) 2025.03.25
Designed by Tistory.