supports force merge based on specified segments. #14163
+99
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In version 7.6.0 of ElasticSearch, I found through /_cat/segments that the docs.deleted count of many segments was continuously increasing, but over time, these deleted documents were never automatically merged. The segment information is as follows:
So I triggered a forced merge through _forcemerge?only_expunge_deletes=true, but it had no effect.A similar phenomenon is mentioned in Issue #13226
I suspect that TieredMergePolicy did not select these segments, thus no merge was triggered.
Therefore, I wrote this forceMergeBySegmentNames method, which can bypass the logic of TieredMergePolicy and perform merging based on the specified segment names. When verified in the production environment, it achieved very good results.