-
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