Package org.elasticsearch.index.shard
Class ElasticsearchMergePolicy
- java.lang.Object
-
- org.apache.lucene.index.MergePolicy
-
- org.apache.lucene.index.FilterMergePolicy
-
- org.elasticsearch.index.shard.ElasticsearchMergePolicy
-
public final class ElasticsearchMergePolicy extends FilterMergePolicy
AMergePolicythat upgrades segments and can upgrade merges.It can be useful to use the background merging process to upgrade segments, for example when we perform internal changes that imply different index options or when a user modifies his mapping in non-breaking ways: we could imagine using this merge policy to be able to add doc values to fields after the fact or on the opposite to remove them.
For now, this
MergePolicytakes care of moving versions that used to be stored as payloads to numeric doc values.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.index.MergePolicy
MergePolicy.MergeAbortedException, MergePolicy.MergeContext, MergePolicy.MergeException, MergePolicy.MergeSpecification, MergePolicy.OneMerge, MergePolicy.OneMergeProgress
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.index.FilterMergePolicy
in
-
Fields inherited from class org.apache.lucene.index.MergePolicy
DEFAULT_MAX_CFS_SEGMENT_SIZE, DEFAULT_NO_CFS_RATIO, maxCFSSegmentSize, noCFSRatio
-
-
Constructor Summary
Constructors Constructor Description ElasticsearchMergePolicy(MergePolicy delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MergePolicy.MergeSpecificationfindForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, MergePolicy.MergeContext mergeContext)Determine what set of merge operations is necessary in order to merge to<=the specified segment count.voidsetUpgradeInProgress(boolean upgrade, boolean onlyAncientSegments)Whenupgradeis true, running a force merge will upgrade any segments written with older versions.-
Methods inherited from class org.apache.lucene.index.FilterMergePolicy
findForcedDeletesMerges, findMerges, getMaxCFSSegmentSizeMB, getNoCFSRatio, keepFullyDeletedSegment, numDeletesToMerge, setMaxCFSSegmentSizeMB, setNoCFSRatio, size, toString, useCompoundFile
-
Methods inherited from class org.apache.lucene.index.MergePolicy
assertDelCount, isMerged, message, segString, verbose
-
-
-
-
Constructor Detail
-
ElasticsearchMergePolicy
public ElasticsearchMergePolicy(MergePolicy delegate)
- Parameters:
delegate- the merge policy to wrap
-
-
Method Detail
-
findForcedMerges
public MergePolicy.MergeSpecification findForcedMerges(SegmentInfos segmentInfos, int maxSegmentCount, Map<SegmentCommitInfo,Boolean> segmentsToMerge, MergePolicy.MergeContext mergeContext) throws IOException
Description copied from class:MergePolicyDetermine what set of merge operations is necessary in order to merge to<=the specified segment count.IndexWritercalls this when itsIndexWriter.forceMerge(int)method is called. This call is always synchronized on theIndexWriterinstance so only one thread at a time will call this method.- Overrides:
findForcedMergesin classFilterMergePolicy- Parameters:
segmentInfos- the total set of segments in the indexmaxSegmentCount- requested maximum number of segments in the index (currently this is always 1)segmentsToMerge- contains the specific SegmentInfo instances that must be merged away. This may be a subset of all SegmentInfos. If the value is True for a given SegmentInfo, that means this segment was an original segment present in the to-be-merged index; else, it was a segment produced by a cascaded merge.mergeContext- the IndexWriter to find the merges on- Throws:
IOException
-
setUpgradeInProgress
public void setUpgradeInProgress(boolean upgrade, boolean onlyAncientSegments)Whenupgradeis true, running a force merge will upgrade any segments written with older versions. This will apply to the next call toIndexWriter.forceMerge(int)that is handled by thisMergePolicy, as well as cascading calls made byIndexWriter.
-
-