WARNING: Version 0.90 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Multi Get API
editMulti Get API
editMulti GET API allows to get multiple documents based on an index, type
(optional) and id (and possibly routing). The response includes a docs
array with all the fetched documents, each element similar in structure
to a document provided by the get
API. Here is an example:
curl 'localhost:9200/_mget' -d '{ "docs" : [ { "_index" : "test", "_type" : "type", "_id" : "1" }, { "_index" : "test", "_type" : "type", "_id" : "2" } ] }'
The mget
endpoint can also be used against an index (in which case it
is not required in the body):
curl 'localhost:9200/test/_mget' -d '{ "docs" : [ { "_type" : "type", "_id" : "1" }, { "_type" : "type", "_id" : "2" } ] }'
And type:
curl 'localhost:9200/test/type/_mget' -d '{ "docs" : [ { "_id" : "1" }, { "_id" : "2" } ] }'
In which case, the ids
element can directly be used to simplify the
request:
curl 'localhost:9200/test/type/_mget' -d '{ "ids" : ["1", "2"] }'
Fields
editSpecific fields can be specified to be retrieved per document to get. For example:
curl 'localhost:9200/_mget' -d '{ "docs" : [ { "_index" : "test", "_type" : "type", "_id" : "1", "fields" : ["field1", "field2"] }, { "_index" : "test", "_type" : "type", "_id" : "2", "fields" : ["field3", "field4"] } ] }'
Routing
editAdded in 0.90.6.
You can specify also specify routing value as a parameter:
curl 'localhost:9200/_mget?routing=key1' -d '{ "docs" : [ { "_index" : "test", "_type" : "type", "_id" : "1", "_routing" : "key2" }, { "_index" : "test", "_type" : "type", "_id" : "2" } ] }'
In this example, document test/type/2
will be fetch from shard corresponding to routing key key1
but
document test/type/1
will be fetch from shard corresponding to routing key key2
.