Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 에이블 기자단
- 케이티 에이블스쿨 기자단
- 케이티 에이블스쿨
- 티스토리챌린지
- 네트워크
- 판다스
- kt 에이블스쿨 6기 빅프로젝트
- 앙상블
- 오블완
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨 6기 후기
- 프로그래머스
- 구현
- SQLD
- kt 에이블스쿨 6기
- kt 에이블스쿨 기자단
- KT 에이블스쿨
- kt 에이블스쿨 6기 ai
- 케이티 에이블스쿨 6기 java
- KT AIVLE
- kt 에이블스쿨 6기 미니 프로젝트
- kt aivle school
- 알고리즘
- ElasticSearch
- 백준
- 데이터 프레임
- 엘라스틱서치
- 파이썬
- 머신러닝
- 케이티 에이블스쿨 6기 ai
Archives
- Today
- Total
미식가의 개발 일기
[Elasticsearch] Bulk API: Elasticsearch 대량 색인 작업 본문
✅ Bulk API란?
Bulk API는 여러 개의 문서 작업(색인, 생성, 수정, 삭제)을 한 번의 HTTP 요청으로 처리할 수 있는 기능이다.
이 방식을 사용하면 다음과 같은 이점이 있다:
- 다수의 HTTP 호출 → 1회 요청으로 병합 → 네트워크 비용 절감
- 대량 색인 시 속도 향상
- 비동기 일괄 작업에 적합
공식 홈페이지
Bulk index or delete documents | Elasticsearch API documentation
All methods and paths for this operation: POST /_bulk PUT /_bulk POST ...
www.elastic.co
🔧 요청 형식 (NDJSON)
Bulk API는 newline-delimited JSON 포맷을 사용한다.
POST /_bulk
Content-Type: application/x-ndjson
{ "index": { "_index": "my_index", "_id": "1" } }
{ "title": "문서 1", "content": "내용입니다" }
{ "create": { "_index": "my_index", "_id": "2" } }
{ "title": "문서 2", "content": "새 문서입니다" }
{ "update": { "_index": "my_index", "_id": "1" } }
{ "doc": { "title": "수정된 문서 1" } }
{ "delete": { "_index": "my_index", "_id": "2" } }
📌 작업 타입별 설명 및 예제
1️⃣ index – 문서 추가 또는 덮어쓰기
- 존재하는 문서일 경우 덮어씀 (upsert)
{ "index": { "_index": "my_index", "_id": "1" } }
{ "title": "Elasticsearch 배우기", "content": "Bulk API 정리" }
2️⃣ create – 문서 없을 때만 생성
- 문서가 존재하면 에러 발생
{ "create": { "_index": "my_index", "_id": "2" } }
{ "title": "새 문서", "category": "tech" }
3️⃣ update – 문서 일부 필드 수정
- 기존 문서에서 특정 필드만 수정
{ "update": { "_index": "my_index", "_id": "1" } }
{ "doc": { "title": "업데이트된 제목" } }
4️⃣ delete – 문서 삭제
{ "delete": { "_index": "my_index", "_id": "2" } }
⚠️ 주의할 점
- 요청 형식은 반드시 newline 단위의 JSON(NDJSON) 이어야 한다.
- 너무 많은 문서를 한 번에 처리하면 성능 저하 또는 실패 발생 → 보통 1000개 단위로 나누어 처리 추천
- 응답에서 errors: true가 나오면 개별 작업의 실패 여부를 꼭 확인해야 한다.
반응형
'Elasticsearch' 카테고리의 다른 글
| [Elasticsearch] Elasticsearch 검색 API (1) | 2025.07.13 |
|---|---|
| [Elasticsearch] 엘라스틱서치 인덱싱 (1) | 2025.07.06 |
| [Elasticsearch] 엘라스틱서치, 키바나 설치하기: Ubuntu(WSL), Docker 환경 (1) | 2025.07.06 |
| [Elasticsearch] 엘라스틱서치란? (2) | 2025.07.05 |