Class AtomicUpdateDocumentMerger

  • public class AtomicUpdateDocumentMerger
    extends Object
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Constructor Detail

      • AtomicUpdateDocumentMerger

        public AtomicUpdateDocumentMerger​(SolrQueryRequest queryReq)
    • Method Detail

      • isAtomicUpdate

        public static boolean isAtomicUpdate​(AddUpdateCommand cmd)
        Utility method that examines the SolrInputDocument in an AddUpdateCommand and returns true if the documents contains atomic update instructions.
      • merge

        public SolrInputDocument merge​(SolrInputDocument fromDoc,
                                       SolrInputDocument toDoc)
        Merges the fromDoc into the toDoc using the atomic update syntax.
        fromDoc - SolrInputDocument which will merged into the toDoc
        toDoc - the final SolrInputDocument that will be mutated with the values from the fromDoc atomic commands
        toDoc with mutated values
      • computeInPlaceUpdatableFields

        public static Set<String> computeInPlaceUpdatableFields​(AddUpdateCommand cmd)
                                                         throws IOException
        Given an add update command, compute a list of fields that can be updated in-place. If there is even a single field in the update that cannot be updated in-place, the entire update cannot be executed in-place (and empty set will be returned in that case).
        Return a set of fields that can be in-place updated.
      • doInPlaceUpdateMerge

        public boolean doInPlaceUpdateMerge​(AddUpdateCommand cmd,
                                            Set<String> updatedFields)
                                     throws IOException
        Given an AddUpdateCommand containing update operations (e.g. set, inc), merge and resolve the operations into a partial document that can be used for indexing the in-place updates. The AddUpdateCommand is modified to contain the partial document (instead of the original document which contained the update operations) and also the prevVersion that this in-place update depends on. Note: updatedFields passed into the method can be changed, i.e. the version field can be added to the set.
        If in-place update cannot succeed, e.g. if the old document is deleted recently, then false is returned. A false return indicates that this update can be re-tried as a full atomic update. Returns true if the in-place update succeeds.