Apache Solr - Indexation des données
En général, indexingest un agencement de documents ou (d'autres entités) systématiquement. L'indexation permet aux utilisateurs de localiser des informations dans un document.
L'indexation collecte, analyse et stocke les documents.
L'indexation est effectuée pour augmenter la vitesse et les performances d'une requête de recherche tout en trouvant un document requis.
Indexation dans Apache Solr
Dans Apache Solr, nous pouvons indexer (ajouter, supprimer, modifier) divers formats de documents tels que xml, csv, pdf, etc. Nous pouvons ajouter des données à l'index Solr de plusieurs manières.
Dans ce chapitre, nous allons discuter de l'indexation -
- Utilisation de l'interface Web Solr.
- Utilisation de l'une des API clientes telles que Java, Python, etc.
- En utilisant le post tool.
Dans ce chapitre, nous verrons comment ajouter des données à l'index d'Apache Solr à l'aide de diverses interfaces (ligne de commande, interface Web et API client Java)
Ajout de documents à l'aide de la commande Post
Solr a un post commande dans son bin/annuaire. À l'aide de cette commande, vous pouvez indexer différents formats de fichiers tels que JSON, XML, CSV dans Apache Solr.
Parcourez le bin répertoire d'Apache Solr et exécutez le –h option de la commande post, comme indiqué dans le bloc de code suivant.
[[email protected] bin]$ cd $SOLR_HOME
[[email protected] bin]$ ./post -h
En exécutant la commande ci-dessus, vous obtiendrez une liste d'options du post command, comme indiqué ci-dessous.
Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]>
or post –help
collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
-url <base Solr update URL> (overrides collection, host, and port)
-host <host> (default: localhost)
-p or -port <port> (default: 8983)
-commit yes|no (default: yes)
Web crawl options:
-recursive <depth> (default: 1)
-delay <seconds> (default: 10)
Directory crawl options:
-delay <seconds> (default: 0)
stdin/args options:
-type <content/type> (default: application/xml)
Other options:
-filetypes <type>[,<type>,...] (default:
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log)
-params "<key> = <value>[&<key> = <value>...]" (values must be
URL-encoded; these pass through to Solr update request)
-out yes|no (default: no; yes outputs Solr response to console)
-format Solr (sends application/json content as Solr commands
to /update instead of /update/json/docs)
Examples:
* JSON file:./post -c wizbang events.json
* XML files: ./post -c records article*.xml
* CSV file: ./post -c signals LATEST-signals.csv
* Directory of files: ./post -c myfiles ~/Documents
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'
Exemple
Supposons que nous ayons un fichier nommé sample.csv avec le contenu suivant (dans le bin annuaire).
Carte d'étudiant | Prénom | Nom de famille | Téléphone | Ville |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Calcutta |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
L'ensemble de données ci-dessus contient des informations personnelles telles que l'identifiant de l'étudiant, le prénom, le nom, le téléphone et la ville. Le fichier CSV de l'ensemble de données est illustré ci-dessous. Ici, vous devez noter que vous devez mentionner le schéma, en documentant sa première ligne.
id, first_name, last_name, phone_no, location
001, Pruthvi, Reddy, 9848022337, Hyderabad
002, kasyap, Sastry, 9848022338, Vishakapatnam
003, Rajesh, Khanna, 9848022339, Delhi
004, Preethi, Agarwal, 9848022330, Pune
005, Trupthi, Mohanty, 9848022336, Bhubaneshwar
006, Archana, Mishra, 9848022335, Chennai
Vous pouvez indexer ces données sous le noyau nommé sample_Solr en utilisant le post commande comme suit -
[[email protected] bin]$ ./post -c Solr_sample sample.csv
Lors de l'exécution de la commande ci-dessus, le document donné est indexé sous le noyau spécifié, générant la sortie suivante.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = Solr_sample -Ddata = files
org.apache.Solr.util.SimplePostTool sample.csv
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/Solr_sample/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 sample.csv (text/csv) to [base]
1 files indexed.
COMMITting Solr index changes to
http://localhost:8983/Solr/Solr_sample/update...
Time spent: 0:00:00.228
Visitez la page d'accueil de Solr Web UI en utilisant l'URL suivante -
http://localhost:8983/
Sélectionnez le noyau Solr_sample. Par défaut, le gestionnaire de requêtes est/selectet la requête est «:». Sans apporter de modifications, cliquez sur leExecuteQuery bouton en bas de page.
Lors de l'exécution de la requête, vous pouvez observer le contenu du document CSV indexé au format JSON (par défaut), comme illustré dans la capture d'écran suivante.
Note - De la même manière, vous pouvez indexer d'autres formats de fichiers tels que JSON, XML, CSV, etc.
Ajout de documents à l'aide de l'interface Web Solr
Vous pouvez également indexer des documents à l'aide de l'interface Web fournie par Solr. Voyons comment indexer le document JSON suivant.
[
{
"id" : "001",
"name" : "Ram",
"age" : 53,
"Designation" : "Manager",
"Location" : "Hyderabad",
},
{
"id" : "002",
"name" : "Robert",
"age" : 43,
"Designation" : "SR.Programmer",
"Location" : "Chennai",
},
{
"id" : "003",
"name" : "Rahim",
"age" : 25,
"Designation" : "JR.Programmer",
"Location" : "Delhi",
}
]
Étape 1
Ouvrez l'interface Web Solr à l'aide de l'URL suivante -
http://localhost:8983/
Step 2
Sélectionnez le noyau Solr_sample. Par défaut, les valeurs des champs Request Handler, Common Within, Overwrite et Boost sont / update, 1000, true et 1.0 respectivement, comme illustré dans la capture d'écran suivante.
Maintenant, choisissez le format de document souhaité parmi JSON, CSV, XML, etc. Tapez le document à indexer dans la zone de texte et cliquez sur le bouton Submit Document bouton, comme indiqué dans la capture d'écran suivante.
Ajout de documents à l'aide de l'API client Java
Voici le programme Java pour ajouter des documents à l'index Apache Solr. Enregistrez ce code dans un fichier avec le nomAddingDocument.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.common.SolrInputDocument;
public class AddingDocument {
public static void main(String args[]) throws Exception {
//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();
//Adding fields to the document
doc.addField("id", "003");
doc.addField("name", "Rajaman");
doc.addField("age","34");
doc.addField("addr","vishakapatnam");
//Adding the document to Solr
Solr.add(doc);
//Saving the changes
Solr.commit();
System.out.println("Documents added");
}
}
Compilez le code ci-dessus en exécutant les commandes suivantes dans le terminal -
[[email protected] bin]$ javac AddingDocument
[[email protected] bin]$ java AddingDocument
En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.
Documents added