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