Elasticsearch query to return all records
Solution 1:
I think lucene syntax is supported so:
http://localhost:9200/foo/_search?pretty=true&q=*:*
size defaults to 10, so you may also need &size=BIGNUMBER
to get more than 10 items. (where BIGNUMBER equals a number you believe is bigger than your dataset)
BUT, elasticsearch documentation suggests for large result sets, using the scan search type.
EG:
curl -XGET 'localhost:9200/foo/_search?search_type=scan&scroll=10m&size=50' -d '
{
"query" : {
"match_all" : {}
}
}'
and then keep requesting as per the documentation link above suggests.
EDIT: scan
Deprecated in 2.1.0.
scan
does not provide any benefits over a regular scroll
request sorted by _doc
. link to elastic docs (spotted by @christophe-roussy)
Solution 2:
http://127.0.0.1:9200/foo/_search/?size=1000&pretty=1
^
Note the size param, which increases the hits displayed from the default (10) to 1000 per shard.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-from-size.html
Solution 3:
elasticsearch(ES) supports both a GET or a POST request for getting the data from the ES cluster index.
When we do a GET:
http://localhost:9200/[your index name]/_search?size=[no of records you want]&q=*:*
When we do a POST:
http://localhost:9200/[your_index_name]/_search
{
"size": [your value] //default 10
"from": [your start index] //default 0
"query":
{
"match_all": {}
}
}
I would suggest to use a UI plugin with elasticsearch http://mobz.github.io/elasticsearch-head/ This will help you get a better feeling of the indices you create and also test your indices.
Solution 4:
Note: The answer relates to an older version of Elasticsearch
0.90
. Versions released since then have an updated syntax. Please refer to other answers that may provide a more accurate answer to the latest answer that you are looking for.
The query below would return the NO_OF_RESULTS you would like to be returned..
curl -XGET 'localhost:9200/foo/_search?size=NO_OF_RESULTS' -d '
{
"query" : {
"match_all" : {}
}
}'
Now, the question here is that you want all the records to be returned. So naturally, before writing a query, you wont know the value of NO_OF_RESULTS.
How do we know how many records exist in your document? Simply type the query below
curl -XGET 'localhost:9200/foo/_search' -d '
This would give you a result that looks like the one below
{
hits" : {
"total" : 2357,
"hits" : [
{
..................
The result total tells you how many records are available in your document. So, that's a nice way to know the value of NO_OF RESULTS
curl -XGET 'localhost:9200/_search' -d '
Search all types in all indices
curl -XGET 'localhost:9200/foo/_search' -d '
Search all types in the foo index
curl -XGET 'localhost:9200/foo1,foo2/_search' -d '
Search all types in the foo1 and foo2 indices
curl -XGET 'localhost:9200/f*/_search
Search all types in any indices beginning with f
curl -XGET 'localhost:9200/_all/type1,type2/_search' -d '
Search types user and tweet in all indices