As I already
said _index, _type, _id are used to uniquely identify a document. If you know
these fields for the documents that you want to retrieve, you can use _mget endpoint
to retrieve all the documents at once.
For example,
GET /_mget { "docs":[ { "_index" : "xyz", "_type" : "employees", "_id" : 1 }, { "_index" : "xyz", "_type" : "products", "_id" : 1 } ] }
Above request
return following two documents.
{ "docs": [ { "_index": "xyz", "_type": "employees", "_id": "1", "_version": 4, "found": true, "_source": { "firstName": "Pradeep", "lastName": "Deshala", "hobbies": [ "Mobile App development", "Gaming" ], "age": 30, "city": "Bangalore" } }, { "_index": "xyz", "_type": "products", "_id": "1", "_version": 2, "found": true, "_source": { "price": "2560.19", "items_available": "131" } } ] }
If you
specify index in query path, You no need to specify the index while retrieving.
GET /xyz/_mget { "docs":[ { "_type" : "employees", "_id" : "2" }, { "_type" : "products", "_id" : "1" } ] }
Following is
the response for above query.
{ "docs": [ { "_index": "xyz", "_type": "employees", "_id": "2", "_version": 1, "found": true, "_source": { "firstName": "Sankalp", "lastName": "Dubey", "hobbies": [ "Shopping", "Swimming", "Reading books" ], "age": 32 } }, { "_index": "xyz", "_type": "products", "_id": "1", "_version": 2, "found": true, "_source": { "price": "2560.19", "items_available": "131" } } ] }
Suppose if
you want to retrieve documents from same index, and type, you just specify all
documents in ids array.
GET /xyz/employees/_mget { "ids" :["3", "1", "2"] }
Above query
return following documents.
{ "docs": [ { "_index": "xyz", "_type": "employees", "_id": "3", "_version": 1, "found": true, "_source": { "firstName": "Arpan", "lastName": "Debroy", "hobbies": [ "Tattoos", "Fencing", "Shopping" ], "age": 28 } }, { "_index": "xyz", "_type": "employees", "_id": "1", "_version": 4, "found": true, "_source": { "firstName": "Pradeep", "lastName": "Deshala", "hobbies": [ "Mobile App development", "Gaming" ], "age": 30, "city": "Bangalore" } }, { "_index": "xyz", "_type": "employees", "_id": "2", "_version": 1, "found": true, "_source": { "firstName": "Sankalp", "lastName": "Dubey", "hobbies": [ "Shopping", "Swimming", "Reading books" ], "age": 32 } } ] }
You can
override the type at run time, for example.
GET /xyz/employees/_mget { "docs":[ { "_id" : "3" }, { "_type" : "products", "_id" : 1 } ] }
In the above
request, second element of docs array specifying type externally. Response like below.
{ "docs": [ { "_index": "xyz", "_type": "employees", "_id": "3", "_version": 1, "found": true, "_source": { "firstName": "Arpan", "lastName": "Debroy", "hobbies": [ "Tattoos", "Fencing", "Shopping" ], "age": 28 } }, { "_index": "xyz", "_type": "products", "_id": "1", "_version": 2, "found": true, "_source": { "price": "2560.19", "items_available": "131" } } ] }
What if document is not found?
found attribute
of the document set to “false”.
GET /xyz/employees/_mget { "docs":[ { "_id" : "30" }, { "_type" : "products", "_id" : 1 } ] }
You will get
following response.
{ "docs": [ { "_index": "xyz", "_type": "employees", "_id": "30", "found": false }, { "_index": "xyz", "_type": "products", "_id": "1", "_version": 2, "found": true, "_source": { "price": "2560.19", "items_available": "131" } } ] }
No comments:
Post a Comment