Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[7.x] [DOCS] Reformat refresh API docs (#46667) #47589

Merged
merged 1 commit into from
Oct 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions docs/reference/how-to/indexing-speed.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ The operation that consists of making changes visible to search - called a
<<indices-refresh,refresh>> - is costly, and calling it often while there is
ongoing indexing activity can hurt indexing speed.

By default, Elasticsearch runs this operation every second, but only on
indices that have received one search request or more in the last 30 seconds.
include::{docdir}/indices/refresh.asciidoc[tag=refresh-interval-default]
This is the optimal configuration if you have no or very little search traffic
(e.g. less than one search request every 5 minutes) and want to optimize for
indexing speed. This behavior aims to automatically optimize bulk indexing in
Expand All @@ -55,7 +54,7 @@ On the other hand, if your index experiences regular search requests, this
default behavior means that Elasticsearch will refresh your index every 1
second. If you can afford to increase the amount of time between when a document
gets indexed and when it becomes visible, increasing the
<<dynamic-index-settings,`index.refresh_interval`>> to a larger value, e.g.
<<index-refresh-interval-setting,`index.refresh_interval`>> to a larger value, e.g.
`30s`, might help improve indexing speed.

[float]
Expand Down
1 change: 1 addition & 0 deletions docs/reference/index-modules.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ specific index module:
How long a shard can not receive a search or get request until it's considered
search idle. (default is `30s`)

[[index-refresh-interval-setting]]
`index.refresh_interval`::

How often to perform a refresh operation, which makes recent changes to the
Expand Down
105 changes: 90 additions & 15 deletions docs/reference/indices/refresh.asciidoc
Original file line number Diff line number Diff line change
@@ -1,28 +1,103 @@
[[indices-refresh]]
=== Refresh
=== Refresh API
++++
<titleabbrev>Refresh</titleabbrev>
++++

The refresh API allows to explicitly refresh one or more index, making
all operations performed since the last refresh available for search.
The (near) real-time capabilities depend on the index engine used. For
example, the internal one requires refresh to be called, but by default a
refresh is scheduled periodically.
Refreshes one or more indices.

[source,console]
--------------------------------------------------
----
POST /twitter/_refresh
--------------------------------------------------
----
// TEST[setup:twitter]

[float]
==== Multi Index

The refresh API can be applied to more than one index with a single
call, or even on `_all` the indices.
[[refresh-api-request]]
==== {api-request-title}

`POST <index>/_refresh`

`GET <index>/_refresh`

`POST /_refresh`

`GET /_refresh`


[[refresh-api-desc]]
==== {api-description-title}

Use the refresh API to explicitly refresh one or more indices.
A _refresh_ makes all operations performed on an index
since the last refresh
available for search.

// tag::refresh-interval-default[]
By default, Elasticsearch periodically refreshes indices every second, but only on
indices that have received one search request or more in the last 30 seconds.
// end::refresh-interval-default[]
You can change this default interval
using the <<index-refresh-interval-setting,`index.refresh_interval`>> setting.

[IMPORTANT]
====
Refreshes are a resource-intensive.
To ensure good cluster performance,
we recommend waiting for {es}'s periodic refresh
rather than performing an explicit refresh
when possible.

If your application workflow
indexes documents and then runs a search
to retrieve the indexed document,
we recommend using the <<docs-index_,index API>>'s
`refresh=wait_for` query parameter option.
This option ensures the indexing operation waits
for a periodic refresh
before running the search.
====

[[refresh-api-path-params]]
==== {api-path-parms-title}

include::{docdir}/rest-api/common-parms.asciidoc[tag=index]
+
To refresh all indices in the cluster,
omit this parameter
or use a value of `_all` or `*`.


[[refresh-api-query-params]]
==== {api-query-parms-title}

include::{docdir}/rest-api/common-parms.asciidoc[tag=allow-no-indices]

include::{docdir}/rest-api/common-parms.asciidoc[tag=expand-wildcards]
+
Defaults to `open`.

include::{docdir}/rest-api/common-parms.asciidoc[tag=index-ignore-unavailable]


[[refresh-api-example]]
==== {api-examples-title}


[[refresh-api-multiple-ex]]
===== Refresh several indices

[source,console]
--------------------------------------------------
----
POST /kimchy,elasticsearch/_refresh
----
// TEST[s/^/PUT kimchy\nPUT elasticsearch\n/]


[[refresh-api-all-ex]]
===== Refresh all indices

[source,console]
----
POST /_refresh
--------------------------------------------------
// TEST[s/^/PUT kimchy\nPUT elasticsearch\n/]
----