Apache Solr - Mise à jour des données
Mise à jour du document à l'aide de XML
Voici le fichier XML utilisé pour mettre à jour un champ dans le document existant. Enregistrez-le dans un fichier avec le nomupdate.xml.
<add>
<doc>
<field name = "id">001</field>
<field name = "first name" update = "set">Raj</field>
<field name = "last name" update = "add">Malhotra</field>
<field name = "phone" update = "add">9000000000</field>
<field name = "city" update = "add">Delhi</field>
</doc>
</add>
Comme vous pouvez le constater, le fichier XML écrit pour mettre à jour les données est exactement comme celui que nous utilisons pour ajouter des documents. Mais la seule différence est que nous utilisons leupdate attribut du champ.
Dans notre exemple, nous utiliserons le document ci-dessus et essayerons de mettre à jour les champs du document avec l'id 001.
Supposons que le document XML existe dans le binrépertoire de Solr. Puisque nous mettons à jour l'index qui existe dans le noyau nommémy_core, vous pouvez mettre à jour à l'aide du post outil comme suit -
[Hadoop@localhost bin]$ ./post -c my_core update.xml
En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool update.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log
POSTing file update.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.159
Vérification
Visitez la page d'accueil de l'interface Web d'Apache Solr et sélectionnez le noyau comme my_core. Essayez de récupérer tous les documents en passant la requête «:» dans la zone de texteqet exécutez la requête. Lors de l'exécution, vous pouvez constater que le document est mis à jour.
Mise à jour du document à l'aide de Java (API client)
Voici le programme Java pour ajouter des documents à l'index Apache Solr. Enregistrez ce code dans un fichier avec le nomUpdatingDocument.java.
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.UpdateRequest;
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;
public class UpdatingDocument {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);
SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();
myDocumentInstantlycommited.addField("id", "002");
myDocumentInstantlycommited.addField("name", "Rahman");
myDocumentInstantlycommited.addField("age","27");
myDocumentInstantlycommited.addField("addr","hyderabad");
updateRequest.add( myDocumentInstantlycommited);
UpdateResponse rsp = updateRequest.process(Solr);
System.out.println("Documents Updated");
}
}
Compilez le code ci-dessus en exécutant les commandes suivantes dans le terminal -
[Hadoop@localhost bin]$ javac UpdatingDocument
[Hadoop@localhost bin]$ java UpdatingDocument
En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.
Documents updated