92 lines
2.8 KiB
Plaintext
92 lines
2.8 KiB
Plaintext
[[indices-seal]]
|
|
== Seal
|
|
|
|
The seal API allows to flush one or more indices and adds a marker to
|
|
primaries and replicas if there are no pending write operations. The seal
|
|
marker is used during recovery after a node restarts. If a replica is
|
|
allocated on a node which already has a shard copy with the same seal as the
|
|
primary then no files will be copied during recovery. Sealing is a best effort
|
|
operation. If write operations are ongoing while the sealing is in progress
|
|
then writing the seal might fail on some copies.
|
|
|
|
A seal marks a point in time snapshot (a low level Lucene commit). This mark
|
|
can be used to decide if the initial, rather resource heavy, recovery phase
|
|
where segments or event the entire lucene index is copied over the network can
|
|
be skipped. If the indices on both sides of the recovery have the same seal no
|
|
segment files need to be copied and transaction log replay can start
|
|
immediately. The seal breaks as soon as the shard issues a new lucene commit,
|
|
uncommitted operations in the transaction log do not break the seal until they
|
|
are committed.
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPOST 'http://localhost:9200/twitter/_seal'
|
|
--------------------------------------------------
|
|
|
|
The response contains details about for which shards a seal was written and
|
|
the reason in case of failure.
|
|
|
|
Response in case all copies of a shard successfully wrote the seal:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"twitter": [
|
|
{
|
|
"shard_id": 0,
|
|
"responses": {
|
|
"5wjOIntuRqy9F_7JRrrLwA": "success",
|
|
"M2iCBe-nS5yaInE8volfSg": "success"
|
|
},
|
|
"message": "success"
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
|
|
Response in case some copies of a shard failed:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"twitter": [
|
|
{
|
|
"shard_id": 0,
|
|
"responses": {
|
|
"M2iCBe-nS5yaInE8volfSg": "pending operations",
|
|
"5wjOIntuRqy9F_7JRrrLwA": "success"
|
|
},
|
|
"message": "failed on some copies"
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
|
|
Response in case all copies of a shard failed:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"twitter": [
|
|
{
|
|
"shard_id": 0,
|
|
"message": "operation counter on primary is non zero [2]"
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
|
|
[float]
|
|
[[seal-multi-index]]
|
|
=== Multi Index
|
|
|
|
The seal API can be applied to more than one index with a single call,
|
|
or even on `_all` the indices.
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
curl -XPOST 'http://localhost:9200/kimchy,elasticsearch/_seal'
|
|
|
|
curl -XPOST 'http://localhost:9200/_seal'
|
|
--------------------------------------------------
|