Class ElasticsearchMergePolicy


  • public final class ElasticsearchMergePolicy
    extends org.apache.lucene.index.FilterMergePolicy
    A MergePolicy that 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 MergePolicy takes 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

        org.apache.lucene.index.MergePolicy.MergeAbortedException, org.apache.lucene.index.MergePolicy.MergeContext, org.apache.lucene.index.MergePolicy.MergeException, org.apache.lucene.index.MergePolicy.MergeSpecification, org.apache.lucene.index.MergePolicy.OneMerge, org.apache.lucene.index.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​(org.apache.lucene.index.MergePolicy delegate)  
    • Method Summary

      Modifier and Type Method Description
      org.apache.lucene.index.MergePolicy.MergeSpecification findForcedMerges​(org.apache.lucene.index.SegmentInfos segmentInfos, int maxSegmentCount, java.util.Map<org.apache.lucene.index.SegmentCommitInfo,​java.lang.Boolean> segmentsToMerge, org.apache.lucene.index.MergePolicy.MergeContext mergeContext)  
      void setUpgradeInProgress​(boolean upgrade, boolean onlyAncientSegments)
      When upgrade is 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ElasticsearchMergePolicy

        public ElasticsearchMergePolicy​(org.apache.lucene.index.MergePolicy delegate)
        Parameters:
        delegate - the merge policy to wrap
    • Method Detail

      • findForcedMerges

        public org.apache.lucene.index.MergePolicy.MergeSpecification findForcedMerges​(org.apache.lucene.index.SegmentInfos segmentInfos,
                                                                                       int maxSegmentCount,
                                                                                       java.util.Map<org.apache.lucene.index.SegmentCommitInfo,​java.lang.Boolean> segmentsToMerge,
                                                                                       org.apache.lucene.index.MergePolicy.MergeContext mergeContext)
                                                                                throws java.io.IOException
        Overrides:
        findForcedMerges in class org.apache.lucene.index.FilterMergePolicy
        Throws:
        java.io.IOException
      • setUpgradeInProgress

        public void setUpgradeInProgress​(boolean upgrade,
                                         boolean onlyAncientSegments)
        When upgrade is true, running a force merge will upgrade any segments written with older versions. This will apply to the next call to IndexWriter.forceMerge(int) that is handled by this MergePolicy, as well as cascading calls made by IndexWriter.