2015-09-17 16:36:25 -04:00
|
|
|
[[indices-forcemerge]]
|
2019-07-19 14:35:36 -04:00
|
|
|
=== Force Merge
|
2015-09-17 16:36:25 -04:00
|
|
|
|
|
|
|
The force merge API allows to force merging of one or more indices through an
|
|
|
|
API. The merge relates to the number of segments a Lucene index holds within
|
|
|
|
each shard. The force merge operation allows to reduce the number of segments by
|
|
|
|
merging them.
|
|
|
|
|
|
|
|
This call will block until the merge is complete. If the http connection is
|
|
|
|
lost, the request will continue in the background, and any new requests will
|
|
|
|
block until the previous force merge is complete.
|
|
|
|
|
2018-05-09 12:53:55 -04:00
|
|
|
WARNING: Force merge should only be called against *read-only indices*. Running
|
|
|
|
force merge against a read-write index can cause very large segments to be produced
|
|
|
|
(>5Gb per segment), and the merge policy will never consider it for merging again until
|
|
|
|
it mostly consists of deleted docs. This can cause very large segments to remain in the shards.
|
|
|
|
|
2015-09-17 16:36:25 -04:00
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-09-01 13:05:22 -04:00
|
|
|
POST /twitter/_forcemerge
|
2015-09-17 16:36:25 -04:00
|
|
|
--------------------------------------------------
|
2016-09-01 13:05:22 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[setup:twitter]
|
2015-09-17 16:36:25 -04:00
|
|
|
|
|
|
|
[float]
|
|
|
|
[[forcemerge-parameters]]
|
2019-07-19 14:35:36 -04:00
|
|
|
==== Request Parameters
|
2015-09-17 16:36:25 -04:00
|
|
|
|
|
|
|
The force merge API accepts the following request parameters:
|
|
|
|
|
|
|
|
[horizontal]
|
|
|
|
`max_num_segments`:: The number of segments to merge to. To fully
|
|
|
|
merge the index, set it to `1`. Defaults to simply checking if a
|
|
|
|
merge needs to execute, and if so, executes it.
|
|
|
|
|
|
|
|
`only_expunge_deletes`:: Should the merge process only expunge segments with
|
|
|
|
deletes in it. In Lucene, a document is not deleted from a segment, just marked
|
|
|
|
as deleted. During a merge process of segments, a new segment is created that
|
|
|
|
does not have those deletes. This flag allows to only merge segments that have
|
|
|
|
deletes. Defaults to `false`. Note that this won't override the
|
|
|
|
`index.merge.policy.expunge_deletes_allowed` threshold.
|
|
|
|
|
|
|
|
`flush`:: Should a flush be performed after the forced merge. Defaults to
|
|
|
|
`true`.
|
|
|
|
|
2018-05-07 08:54:06 -04:00
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
|
|
|
POST /kimchy/_forcemerge?only_expunge_deletes=false&max_num_segments=100&flush=true
|
|
|
|
--------------------------------------------------
|
2018-05-07 10:09:03 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT kimchy\n/]
|
2018-05-07 08:54:06 -04:00
|
|
|
|
2015-09-17 16:36:25 -04:00
|
|
|
[float]
|
|
|
|
[[forcemerge-multi-index]]
|
2019-07-19 14:35:36 -04:00
|
|
|
==== Multi Index
|
2015-09-17 16:36:25 -04:00
|
|
|
|
|
|
|
The force merge API can be applied to more than one index with a single call, or
|
2018-10-23 06:25:04 -04:00
|
|
|
even on `_all` the indices. Multi index operations are executed one shard at a
|
|
|
|
time per node. Force merge makes the storage for the shard being merged
|
|
|
|
temporarily increase, up to double its size in case `max_num_segments` is set
|
|
|
|
to `1`, as all segments need to be rewritten into a new one.
|
|
|
|
|
2015-09-17 16:36:25 -04:00
|
|
|
|
|
|
|
[source,js]
|
|
|
|
--------------------------------------------------
|
2016-09-01 13:05:22 -04:00
|
|
|
POST /kimchy,elasticsearch/_forcemerge
|
2015-09-17 16:36:25 -04:00
|
|
|
|
2016-09-01 13:05:22 -04:00
|
|
|
POST /_forcemerge
|
2015-09-17 16:36:25 -04:00
|
|
|
--------------------------------------------------
|
2016-09-01 13:05:22 -04:00
|
|
|
// CONSOLE
|
|
|
|
// TEST[s/^/PUT kimchy\nPUT elasticsearch\n/]
|