Skip to content

Commit

Permalink
[DOCS] Reformat refresh API docs (elastic#46667) (elastic#47590)
Browse files Browse the repository at this point in the history
  • Loading branch information
jrodewig authored Oct 4, 2019
1 parent c5a5243 commit cc0502f
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 22 deletions.
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
111 changes: 92 additions & 19 deletions docs/reference/indices/refresh.asciidoc
Original file line number Diff line number Diff line change
@@ -1,30 +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,js]
--------------------------------------------------
[source,console]
----
POST /twitter/_refresh
--------------------------------------------------
// CONSOLE
----
// 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}

[source,js]
--------------------------------------------------
`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
--------------------------------------------------
// CONSOLE
// TEST[s/^/PUT kimchy\nPUT elasticsearch\n/]
----

0 comments on commit cc0502f

Please sign in to comment.