-
Notifications
You must be signed in to change notification settings - Fork 24.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[DOCS] Add search pagination docs (#56785)
Reworks the `from / size` content to `Paginate search results`. Moves those docs from the request body search API page (slated for deletion) to the `Run a search` tutorial docs. Also adds some notes to the `from` and `size` param docs. Co-authored-by: debadair <debadair@elastic.co>
- Loading branch information
Showing
6 changed files
with
114 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,51 @@ | ||
[[request-body-search-from-size]] | ||
==== From / Size | ||
[discrete] | ||
[[paginate-search-results]] | ||
=== Paginate search results | ||
|
||
Pagination of results can be done by using the `from` and `size` | ||
parameters. The `from` parameter defines the offset from the first | ||
result you want to fetch. The `size` parameter allows you to configure | ||
the maximum amount of hits to be returned. | ||
By default, the search API returns the top 10 matching documents. | ||
|
||
Though `from` and `size` can be set as request parameters, they can also | ||
be set within the search body. `from` defaults to `0`, and `size` | ||
defaults to `10`. | ||
To paginate through a larger set of results, you can use the search API's `size` | ||
and `from` parameters. The `size` parameter is the number of matching documents | ||
to return. The `from` parameter is a zero-indexed offset from the beginning of | ||
the complete result set that indicates the document you want to start with. | ||
|
||
.*Example* | ||
[%collapsible] | ||
==== | ||
The following search API request sets the `from` offset to `5`, meaning the | ||
request offsets, or skips, the first five matching documents. | ||
The `size` parameter is `20`, meaning the request can return up to 20 documents, | ||
starting at the offset. | ||
[source,console] | ||
-------------------------------------------------- | ||
---- | ||
GET /_search | ||
{ | ||
"from" : 0, "size" : 10, | ||
"query" : { | ||
"term" : { "user" : "kimchy" } | ||
} | ||
"from": 5, | ||
"size": 20, | ||
"query": { | ||
"term": { "user": "kimchy" } | ||
} | ||
} | ||
-------------------------------------------------- | ||
---- | ||
==== | ||
|
||
By default, you cannot page through more than 10,000 documents using the `from` | ||
and `size` parameters. This limit is set using the | ||
<<index-max-result-window,`index.max_result_window`>> index setting. | ||
|
||
Note that `from` + `size` can not be more than the `index.max_result_window` | ||
index setting, which defaults to 10,000. | ||
Deep paging or requesting many results at once can result in slow searches. | ||
Results are sorted before being returned. Because search requests usually span | ||
multiple shards, each shard must generate its own sorted results. These separate | ||
results must then be combined and sorted to ensure that the overall sort order | ||
is correct. | ||
|
||
As an alternative to deep paging, we recommend using the | ||
<<request-body-search-scroll,Scroll>> or | ||
<<request-body-search-search-after,Search After>> APIs. | ||
|
||
WARNING: {es} uses Lucene's internal doc IDs as tie-breakers. These internal | ||
doc IDs can be completely different across replicas of the same | ||
data. When paginating, you might occasionally see that documents with the same | ||
sort values are not ordered consistently. For deep scrolling, it is more | ||
efficient to use the <<request-body-search-scroll,Scroll>> or | ||
<<request-body-search-search-after,Search After>> APIs. | ||
sort values are not ordered consistently. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -283,3 +283,5 @@ GET /*/_search | |
---- | ||
// TEST[continued] | ||
==== | ||
|
||
include::request/from-size.asciidoc[] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters