92 lines
2.7 KiB
Plaintext
92 lines
2.7 KiB
Plaintext
[[indices-seal]]
|
|
== Seal
|
|
|
|
The seal API flushes and adds a "seal" marker to the shards of one or more
|
|
indices. The seal is used during recovery or restarts to skip the first and
|
|
most costly phase of the process if all copies of the shard have the same seal.
|
|
No segment files need to be copied and the transaction log replay phase of the
|
|
recovery can start immediately which makes recovery much faster.
|
|
|
|
There are two important points about seals:
|
|
1. They are best effort in that if there are any outstanding write operations
|
|
while the seal operation is being performed then the shards which those writes
|
|
target won't be sealed but all others will be. See below for more.
|
|
2. The seal breaks as soon as the shard issues a new lucene commit. Uncommitted
|
|
operations in the transaction log do not break the seal. That is because a seal
|
|
marks a point in time snapshot of the segments, a low level lucene commit.
|
|
Practically that means that every write operation on the index will remove the
|
|
seal.
|
|
|
|
[source,bash]
|
|
--------------------------------------------------
|
|
$ curl -XPOST 'http://localhost:9200/twitter/_seal'
|
|
--------------------------------------------------
|
|
|
|
The response contains details about which shards wrote the seal and the reason
|
|
in case they failed to write the seal.
|
|
|
|
Here is what it looks like when all copies single shard index successfully
|
|
wrote the seal:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"twitter": [
|
|
{
|
|
"shard_id": 0,
|
|
"responses": {
|
|
"5wjOIntuRqy9F_7JRrrLwA": "success",
|
|
"M2iCBe-nS5yaInE8volfSg": "success"
|
|
},
|
|
"message": "success"
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
|
|
Here is what it looks like when one copy fails:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"twitter": [
|
|
{
|
|
"shard_id": 0,
|
|
"responses": {
|
|
"M2iCBe-nS5yaInE8volfSg": "pending operations",
|
|
"5wjOIntuRqy9F_7JRrrLwA": "success"
|
|
},
|
|
"message": "failed on some copies"
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
|
|
Sometimes the failures can be shard wide and they'll look like this:
|
|
|
|
[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'
|
|
--------------------------------------------------
|