SpringData-Solr partial field modification

Reasons for the modification of some fields in Solr:

  1. Performance optimization: Solr's index is based on documents, and documents usually contain multiple fields. If an entire document needs to be updated, Solr will re-index the entire document, which can be time and resource intensive.
  2. Data consistency: In some cases, you may only need to update a subset of fields in a document, rather than the entire document. For example, you may need to update product availability or price without updating other product information.
  3. Real-time indexing: Solr supports real-time indexing, which means that when a document is updated, the index is updated immediately without waiting for the index to rebuild. Live indexing can cause performance issues if the entire document needs to be updated.

Some fields modify the url request

To update some fields in Solr, you can use Solr's /updaterequest handler, specifically POSTrequest. Here is an example URL:

http://localhost:8983/solr/<collection>/update?commit=true 

where <collection>is a collection name in Solr, eg mycollection.

In the request body, you need to specify the ID of the document to update and the fields to update. For example, the following is a sample request body to update a field in a document of to id:12345title

[
  {
    "id": "12345",
    "title": { "set": "New Title" }
  }
]

In the request body, use setthe operator to set the new value of the field to be updated.

Finally, the parameter needs to commitbe set trueto commit updates to the Solr index. If the parameter is not set commit, Solr will not immediately commit updates to the index.

The complete example URL and request body are as follows:

POST http://localhost:8983/solr/mycollection/update?commit=true
[
  {
    "id": "12345",
    "title": { "set": "New Title" }
  }
]

SpringData-Solr partial field modification

    public void partialFieldUpdate(){
    
    
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", "123456");
        doc.addField("title", JSONObject.of("set", "New Title"));

        solrTemplate.saveDocument("mycollection", doc);
        solrTemplate.commit("mycollection");
    }

Guess you like

Origin blog.csdn.net/qq_45584746/article/details/131416817