[[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' --------------------------------------------------