<!> Solr4.0

Atomic Updates

Atomic Updates is a new feature in Solr 4.0 that allows you to update on a field level rather than on a document level (In previous versions). This means that you can update individual fields without having to send the entire document to Solr with the un-updated fields values. Internally Solr re-adds the document to the index with the updated fields.

Available Modifiers

Example syntaxes...

Caveats and Limitations

Stored Values

The core functionality of atomically updating a document requires that all fields in your SchemaXml must be configured as stored="true" except for fields which are <copyField/> destinations -- which must be configured as stored="false". This is because the atomic updates are applied to the document represented by the existing stored field values.

Update Log

An <updateLog/> must be configured in your solrconfig.xml in order for atomic document updates to be used. This is neccessary to ensure that the update instructions are applied to the most recently indexed version of the document -- even if that version has not yet been commited (just like RealTimeGet).

DistributedUpdateRequestProcessorFactory

To improve performance in typical installations, atomic document updates are processed during execution of the DistributedUpdateRequestProcessor. By default all update chains have the DistributedUpdateRequestProcessorFactory inserted into them just prior to the RunUpdateProcessorFactory and most users won't be afected by this implementation detail, but there are two situations where it might affect you...

Using Update Processors that Modify Documents

If you use UpdateRequestProcessors to modify document values when indexing, these should be placed after the DistributedUpdateRequestProcessorFactory in your update chain to ensure they see the fully populated SolrInputDocument with all field values when an atomic document update request is recieved.

Disabling DistributedUpdateRequestProcessorFactory

If you have disabled DistributedUpdateRequestProcessorFactory by adding your own DistributingUpdateProcessorFactory (or NoOpDistributingUpdateProcessorFactory) to your update chain, then atomic document updates are not supported

References

Atomic_Updates (last edited 2013-04-27 16:42:03 by JackKrupansky)