In previous post, I explained how to retrieve multiple documents using _mget endpoint. In
this post, I am going to explain _bulk endpoint, used to perform multiple
operations at a time.
Following is
the syntax for _bulk request body.
{ action: {
metadata }}\n
{ request
body }\n
{ action: {
metadata }}\n
{ request
body }\n
...
“action” can
be create, index, update, or delete.
Action
|
Description
|
create
|
Create
document, if it is not exist.
|
index
|
Create new
document, or replace existing document.
|
update
|
Perform
partial update on a document.
|
delete
|
Delete a
document
|
“metadata”
is used to identify a document, it contains “_index”, “_type”, “_id”.
POST /_bulk {"delete" : {"_index": "xyz", "_type": "employees", "_id" : "1"}} {"create" : {"_index": "xyz", "_type": "products", "_id" : "2"}} {"items_available" : "23"} {"index" : {"_index" : "xyz", "_type":"employees", "_id" : "6"}} {"firstName" : "Ranganath", "lastName": "ranga"} {"update" : {"_index": "xyz", "_type": "employees", "_id" : "6"}} {"doc" : {"age" : "30"}}
Following is
the response for above request.
{ "took": 3, "errors": false, "items": [ { "delete": { "_index": "xyz", "_type": "employees", "_id": "1", "_version": 5, "status": 200, "found": true } }, { "create": { "_index": "xyz", "_type": "products", "_id": "2", "_version": 1, "status": 201 } }, { "index": { "_index": "xyz", "_type": "employees", "_id": "6", "_version": 1, "status": 201 } }, { "update": { "_index": "xyz", "_type": "employees", "_id": "6", "_version": 2, "status": 200 } } ] }
Note:
1.
Every
line in _bulk request body must end with new line (including last line).
2.
Request
body is not required for delete operation.
3. When we submit number of requests at a time, each sub request handled independently. So failure of one sub-request don’t impact other request.
3. When we submit number of requests at a time, each sub request handled independently. So failure of one sub-request don’t impact other request.
No comments:
Post a Comment