@@ -7,55 +7,57 @@ delete operation. Changes that happen after one commit and before another will
7
7
be removed from the index by Lucene in the event of process exit or hardware
8
8
failure.
9
9
10
- Because Lucene commits are too expensive to perform on every individual change,
11
- each shard copy also has a _transaction log_ known as its _translog_ associated
12
- with it . All index and delete operations are written to the translog after
10
+ Lucene commits are too expensive to perform on every individual change, so each
11
+ shard copy also writes operations into its _transaction log_ known as the
12
+ _translog_ . All index and delete operations are written to the translog after
13
13
being processed by the internal Lucene index but before they are acknowledged.
14
- In the event of a crash, recent transactions that have been acknowledged but
15
- not yet included in the last Lucene commit can instead be recovered from the
16
- translog when the shard recovers.
14
+ In the event of a crash, recent operations that have been acknowledged but not
15
+ yet included in the last Lucene commit are instead recovered from the translog
16
+ when the shard recovers.
17
17
18
- An Elasticsearch flush is the process of performing a Lucene commit and
19
- starting a new translog. Flushes are performed automatically in the background
20
- in order to make sure the translog doesn't grow too large, which would make
21
- replaying its operations take a considerable amount of time during recovery.
22
- The ability to perform a flush manually is also exposed through an API,
23
- although this is rarely needed.
18
+ An {es} <<indices- flush,flush>> is the process of performing a Lucene commit and
19
+ starting a new translog generation . Flushes are performed automatically in the
20
+ background in order to make sure the translog does not grow too large, which
21
+ would make replaying its operations take a considerable amount of time during
22
+ recovery. The ability to perform a flush manually is also exposed through an
23
+ API, although this is rarely needed.
24
24
25
25
[float]
26
26
=== Translog settings
27
27
28
28
The data in the translog is only persisted to disk when the translog is
29
- ++fsync++ed and committed. In the event of a hardware failure or an operating
29
+ ++fsync++ed and committed. In the event of a hardware failure or an operating
30
30
system crash or a JVM crash or a shard failure, any data written since the
31
31
previous translog commit will be lost.
32
32
33
- By default, `index.translog.durability` is set to `request` meaning that Elasticsearch will only report success of an index, delete,
34
- update, or bulk request to the client after the translog has been successfully
35
- ++fsync++ed and committed on the primary and on every allocated replica. If
36
- `index.translog.durability` is set to `async` then Elasticsearch ++fsync++s
37
- and commits the translog every `index.translog.sync_interval` (defaults to 5 seconds).
33
+ By default, `index.translog.durability` is set to `request` meaning that
34
+ Elasticsearch will only report success of an index, delete, update, or bulk
35
+ request to the client after the translog has been successfully ++fsync++ed and
36
+ committed on the primary and on every allocated replica. If
37
+ `index.translog.durability` is set to `async` then Elasticsearch ++fsync++s and
38
+ commits the translog only every `index.translog.sync_interval` which means that
39
+ any operations that were performed just before a crash may be lost when the node
40
+ recovers.
38
41
39
42
The following <<indices-update-settings,dynamically updatable>> per-index
40
43
settings control the behaviour of the translog:
41
44
42
45
`index.translog.sync_interval`::
43
46
44
- How often the translog is ++fsync++ed to disk and committed, regardless of
45
- write operations. Defaults to `5s`. Values less than `100ms` are not allowed.
47
+ How often the translog is ++fsync++ed to disk and committed, regardless of
48
+ write operations. Defaults to `5s`. Values less than `100ms` are not allowed.
46
49
47
50
`index.translog.durability`::
48
51
+
49
52
--
50
53
51
54
Whether or not to `fsync` and commit the translog after every index, delete,
52
- update, or bulk request. This setting accepts the following parameters:
55
+ update, or bulk request. This setting accepts the following parameters:
53
56
54
57
`request`::
55
58
56
- (default) `fsync` and commit after every request. In the event
57
- of hardware failure, all acknowledged writes will already have been
58
- committed to disk.
59
+ (default) `fsync` and commit after every request. In the event of hardware
60
+ failure, all acknowledged writes will already have been committed to disk.
59
61
60
62
`async`::
61
63
@@ -66,33 +68,43 @@ update, or bulk request. This setting accepts the following parameters:
66
68
67
69
`index.translog.flush_threshold_size`::
68
70
69
- The translog stores all operations that are not yet safely persisted in Lucene
70
- (i.e., are not part of a Lucene commit point). Although these operations are
71
- available for reads, they will need to be reindexed if the shard was to
72
- shutdown and has to be recovered. This settings controls the maximum total size
73
- of these operations, to prevent recoveries from taking too long. Once the
74
- maximum size has been reached a flush will happen, generating a new Lucene
75
- commit point. Defaults to `512mb`.
71
+ The translog stores all operations that are not yet safely persisted in Lucene
72
+ (i.e., are not part of a Lucene commit point). Although these operations are
73
+ available for reads, they will need to be replayed if the shard was stopped
74
+ and had to be recovered. This setting controls the maximum total size of these
75
+ operations, to prevent recoveries from taking too long. Once the maximum size
76
+ has been reached a flush will happen, generating a new Lucene commit point.
77
+ Defaults to `512mb`.
76
78
77
- `index.translog.retention.size`::
78
-
79
- When soft deletes is disabled (enabled by default in 7.0 or later),
80
- `index.translog.retention.size` controls the total size of translog files to keep.
81
- Keeping more translog files increases the chance of performing an operation based
82
- sync when recovering replicas. If the translog files are not sufficient,
83
- replica recovery will fall back to a file based sync. Defaults to `512mb`
79
+ [float]
80
+ [[index-modules-translog-retention]]
81
+ ==== Translog retention
82
+
83
+ If an index is not using <<index-modules-history-retention,soft deletes>> to
84
+ retain historical operations then {es} recovers each replica shard by replaying
85
+ operations from the primary's translog. This means it is important for the
86
+ primary to preserve extra operations in its translog in case it needs to
87
+ rebuild a replica. Moreover it is important for each replica to preserve extra
88
+ operations in its translog in case it is promoted to primary and then needs to
89
+ rebuild its own replicas in turn. The following settings control how much
90
+ translog is retained for peer recoveries.
84
91
85
- Both `index.translog.retention.size` and `index.translog.retention.age` should not
86
- be specified unless soft deletes is disabled as they will be ignored.
92
+ `index.translog.retention.size`::
87
93
94
+ This controls the total size of translog files to keep for each shard.
95
+ Keeping more translog files increases the chance of performing an operation
96
+ based sync when recovering a replica. If the translog files are not
97
+ sufficient, replica recovery will fall back to a file based sync. Defaults to
98
+ `512mb`. This setting is ignored, and should not be set, if soft deletes are
99
+ enabled. Soft deletes are enabled by default in indices created in {es}
100
+ versions 7.0.0 and later.
88
101
89
102
`index.translog.retention.age`::
90
103
91
- When soft deletes is disabled (enabled by default in 7.0 or later),
92
- `index.translog.retention.age` controls the maximum duration for which translog
93
- files to keep. Keeping more translog files increases the chance of performing an
94
- operation based sync when recovering replicas. If the translog files are not sufficient,
95
- replica recovery will fall back to a file based sync. Defaults to `12h`
96
-
97
- Both `index.translog.retention.size` and `index.translog.retention.age` should not
98
- be specified unless soft deletes is disabled as they will be ignored.
104
+ This controls the maximum duration for which translog files are kept by each
105
+ shard. Keeping more translog files increases the chance of performing an
106
+ operation based sync when recovering replicas. If the translog files are not
107
+ sufficient, replica recovery will fall back to a file based sync. Defaults to
108
+ `12h`. This setting is ignored, and should not be set, if soft deletes are
109
+ enabled. Soft deletes are enabled by default in indices created in {es}
110
+ versions 7.0.0 and later.
0 commit comments