Differences between revisions 2 and 3
Revision 2 as of 2012-12-11 01:03:31
Size: 3148
Editor: HossMan
Comment: doc edits inspired by SOLR-4127
Revision 3 as of 2013-04-27 16:42:03
Size: 3160
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
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 document to Solr with the update fields values. Internally Solr re-adds the document to the index with the updated fields. 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.
Line 24: Line 24:
The core functionality of atomicaly 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. 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.

<!> 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

  • set – sets or replaces a particular value, or remove the value if null is specified as the new value. <!> Note: In the case of multi-valued fields if null is specified on set all the values in the field are removed. See SOLR-3862

  • add – adds an additional value to a multi-valued field

  • inc – increments a numeric value by a specific amount

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)