Skip to content

Commit 251b243

Browse files
committed
Honour max segment size when setting only_expunge_deletes on force merge
This commit changes the es merge policy to apply the maximum segment size on force merges that only expunge deletes (forceMergeDeletes). This option is useful for read-write use cases that wants to reclaim deleted docs more aggressively than the `index.merge.policy.deletes_pct_allowed`. Relates elastic#77270
1 parent ccd4f1c commit 251b243

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

docs/reference/indices/forcemerge.asciidoc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ If so, executes it.
123123
--
124124
(Optional, Boolean)
125125
If `true`,
126-
only expunge segments containing document deletions.
126+
expunge all segments containing more than `index.merge.policy.expunge_deletes_allowed`
127+
(default to 10) percents of deleted documents.
127128
Defaults to `false`.
128129

129130
In Lucene,
@@ -133,8 +134,6 @@ During a merge,
133134
a new segment is created
134135
that does not contain those document deletions.
135136

136-
NOTE: This parameter does *not* override the
137-
`index.merge.policy.expunge_deletes_allowed` setting.
138137
--
139138

140139

server/src/main/java/org/elasticsearch/index/EsTieredMergePolicy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public MergeSpecification findForcedMerges(SegmentInfos infos, int maxSegmentCou
4141

4242
@Override
4343
public MergeSpecification findForcedDeletesMerges(SegmentInfos infos, MergeContext mergeContext) throws IOException {
44-
return forcedMergePolicy.findForcedDeletesMerges(infos, mergeContext);
44+
return regularMergePolicy.findForcedDeletesMerges(infos, mergeContext);
4545
}
4646

4747
public void setForceMergeDeletesPctAllowed(double forceMergeDeletesPctAllowed) {

server/src/test/java/org/elasticsearch/index/EsTieredMergePolicyTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public void testSetForceMergeDeletesPctAllowed() {
3232
EsTieredMergePolicy policy = new EsTieredMergePolicy();
3333
policy.setForceMergeDeletesPctAllowed(42);
3434
assertEquals(42, policy.forcedMergePolicy.getForceMergeDeletesPctAllowed(), 0);
35+
assertEquals(42, policy.regularMergePolicy.getForceMergeDeletesPctAllowed(), 0);
3536
}
3637

3738
public void testSetFloorSegmentMB() {

0 commit comments

Comments
 (0)