Atomic updates to parts of Solr documents

update_atomic_xml(conn, body, name, wt = "json", raw = FALSE, ...)

Arguments

conn

A solrium connection object, see SolrClient

body

(character) XML as a character string

name

(character) Name of the core or collection

wt

(character) One of json (default) or xml. If json, uses jsonlite::fromJSON() to parse. If xml, uses xml2::read_xml() to parse

raw

(logical) If TRUE, returns raw data in format specified by wt param

...

curl options passed on to crul::HttpClient

References

https://lucene.apache.org/solr/guide/7_0/updating-parts-of-documents.html

Examples

if (FALSE) { # start Solr in Cloud mode: bin/solr start -e cloud -noprompt # connect (conn <- SolrClient$new()) # create a collection if (!conn$collection_exists("books")) { conn$collection_delete("books") conn$collection_create("books") } # Add documents file <- system.file("examples", "books.xml", package = "solrium") cat(readLines(file), sep = "\n") conn$update_xml(file, "books") # get a document conn$get(ids = '978-0641723445', "books", wt = "xml") # atomic update body <- ' <add> <doc> <field name="id">978-0641723445</field> <field name="genre_s" update="set">mystery</field> <field name="pages_i" update="inc">1</field> </doc> </add>' conn$update_atomic_xml(body, name="books") # get the document again conn$get(ids = '978-0641723445', "books", wt = "xml") # another atomic update body <- ' <add> <doc> <field name="id">978-0641723445</field> <field name="price" update="remove">12.5</field> </doc> </add>' conn$update_atomic_xml(body, "books") # get the document again conn$get(ids = '978-0641723445', "books", wt = "xml") }