배치 처리

edit

Elasticsearch는 개별 문서를 색인화, 업데이트, 삭제하는 기능뿐 아니라 _bulk API를 사용하여 위와 같은 작업을 배치 형태로 수행하는 기능도 제공합니다. 이 기능은 네트워크 왕복을 최소화하면서 최대한 신속하게 여러 작업을 수행할 수 있는 매우 효율적인 메커니즘을 제공한다는 점에서 중요합니다.

간단한 예로 다음 호출은 하나의 벌크 작업으로 문서 2개(ID 1 - John Doe, ID 2 - Jane Doe)를 색인화합니다.

POST /customer/external/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

이 예는 하나의 벌크 작업으로 첫 번째 문서(ID = 1)를 업데이트한 다음 두 번째 문서(ID = 2)를 삭제합니다.

POST /customer/external/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

위에서 삭제 작업의 경우 그 다음에 소스 문서가 오지 않습니다. 삭제할 문서의 ID만 있으면 되기 때문입니다.

작업 중 하나가 실패하더라도 벌크 API는 실패하지 않습니다. 어떤 이유로 어느 한 작업이 실패한 경우 그 나머지 작업은 계속 처리합니다. 벌크 API가 반환할 때 각 작업의 상태를 (전송 순서와 동일하게) 표시하므로 어떤 작업이 실패했는지 여부를 알 수 있습니다.