diff --git a/docs/reference/search.asciidoc b/docs/reference/search.asciidoc index 8568f8df296c4..dfb302e03dac0 100644 --- a/docs/reference/search.asciidoc +++ b/docs/reference/search.asciidoc @@ -156,6 +156,8 @@ include::search/request-body.asciidoc[] include::search/async-search.asciidoc[] +include::search/scroll-api.asciidoc[] + include::search/search-template.asciidoc[] include::search/search-shards.asciidoc[] diff --git a/docs/reference/search/scroll-api.asciidoc b/docs/reference/search/scroll-api.asciidoc new file mode 100644 index 0000000000000..6bf65b13ab9f6 --- /dev/null +++ b/docs/reference/search/scroll-api.asciidoc @@ -0,0 +1,142 @@ +[[scroll-api]] +=== Scroll API +++++ +Scroll +++++ + +Retrieves the next batch of results for a <>. + +//// +[source,console] +-------------------------------------------------- +GET /_search?scroll=1m +{ + "size": 1, + "query": { + "match_all": {} + } +} +-------------------------------------------------- +// TEST[setup:twitter] +//// + +[source,console] +-------------------------------------------------- +GET /_search/scroll +{ + "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" +} +-------------------------------------------------- +// TEST[continued] +// TEST[s/DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==/$body._scroll_id/] + +[[scroll-api-request]] +==== {api-request-title} + +`GET /_search/scroll/` +deprecated:[7.0.0] + +`GET /_search/scroll` + +`POST /_search/scroll/` +deprecated:[7.0.0] + +`POST /_search/scroll` + +[[scroll-api-desc]] +==== {api-description-title} + +You can use the scroll API to retrieve large sets of results from a single +<> request. + +The scroll API requires a scroll ID. To get a scroll ID, submit a +<> request that includes an argument for the +<>. The `scroll` +parameter indicates how long {es} should retain the +<> for the request. + +The search response returns a scroll ID in the `_scroll_id` response body +parameter. You can then use the scroll ID with the scroll API to retrieve the +next batch of results for the request. + +You can also use the scroll API to specify a new `scroll` parameter that extends +or shortens the retention period for the search context. + +See <>. + +IMPORTANT: Results from a scrolling search reflect the state of the index at the +time of the initial search request. Subsequent indexing or document changes only +affect later search and scroll requests. + +[[scroll-api-path-params]] +==== {api-path-parms-title} + +``:: +deprecated:[7.0.0] +(Optional, string) +Scroll ID of the search. ++ +IMPORTANT: Scroll IDs can be long. We recommend only specifying scroll IDs using +the <>. + +[[scroll-api-query-params]] +==== {api-query-parms-title} + +`scroll`:: +(Optional, <>) +Period to retain the <> for scrolling. See +<>. ++ +This value overrides the duration set by the original search API request's +`scroll` parameter. ++ +By default, this value cannot must be less than `1d` (one day). You can change +this limit using the `search.max_keep_alive` cluster-level setting. ++ +IMPORTANT: You can also specify this value using the `scroll` request body +parameter. If both parameters are specified, only the query parameter is used. + +`scroll_id`:: +deprecated:[7.0.0] +(Optional, string) +Scroll ID for the search. ++ +IMPORTANT: Scroll IDs can be long. We recommend only specifying scroll IDs using +the <>. + +`rest_total_hits_as_int`:: +(Optional, boolean) +If `true`, the API response's `hit.total` property is returned as an integer. +If `false`, the API response's `hit.total` property is returned as an object. +Defaults to `false`. + +[role="child_attributes"] +[[scroll-api-request-body]] +==== {api-request-body-title} + +`scroll`:: +(Optional, <>) +Period to retain the <> for scrolling. See +<>. ++ +This value overrides the duration set by the original search API request's +`scroll` parameter. ++ +By default, this value cannot must be less than `1d` (one day). You can change +this limit using the `search.max_keep_alive` cluster-level setting. ++ +IMPORTANT: You can also specify this value using the `scroll` query +parameter. If both parameters are specified, only the query parameter is used. + +[[scroll-api-scroll-id-param]] +`scroll_id`:: +(Required, string) +Scroll ID for the search. + +[role="child_attributes"] +[[scroll-api-response-body]] +==== {api-response-body-title} + +The scroll API returns the same response body as the search API. See the search +API's <>. diff --git a/docs/reference/search/search.asciidoc b/docs/reference/search/search.asciidoc index 174dba2fc624c..4a6e9cbabe793 100644 --- a/docs/reference/search/search.asciidoc +++ b/docs/reference/search/search.asciidoc @@ -165,6 +165,15 @@ level settings. (Optional, <>) Specifies how long a consistent view of the index should be maintained for scrolled search. +[[search-api-scroll-query-param]] +`scroll`:: +(Optional, <>) +Period to retain the <> for scrolling. See +<>. ++ +By default, this value cannot must be less than `1d` (one day). You can change +this limit using the `search.max_keep_alive` cluster-level setting. + include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=search_type] `seq_no_primary_term`:: @@ -198,6 +207,9 @@ As an alternative to deep paging, we recommend using <> or the <> parameter. +If the <> is specified, this +value cannot be zero (`0`). + [IMPORTANT] ==== You can also specify this value using the `size` request body parameter. If @@ -365,6 +377,9 @@ As an alternative to deep paging, we recommend using <> or the <> parameter. +If the <> is specified, this +value cannot be zero (`0`). + [IMPORTANT] ==== You can also specify this value using the `size` query parameter. If both @@ -417,6 +432,17 @@ parameters are specified, only the query parameter is used. [[search-api-response-body]] ==== {api-response-body-title} +`_scroll_id`:: +(string) +Identifier for the search and its <>. ++ +You can use this scroll ID with the <> to retrieve the +next batch of search results for the request. See +<>. ++ +This parameter is only returned if the <> is specified in the request. + `took`:: + --