Apache Solr - Indizierung von Daten
Im Allgemeinen, indexingist eine systematische Anordnung von Dokumenten oder (anderen Entitäten). Durch die Indizierung können Benutzer Informationen in einem Dokument suchen.
Durch die Indizierung werden Dokumente gesammelt, analysiert und gespeichert.
Die Indizierung wird durchgeführt, um die Geschwindigkeit und Leistung einer Suchabfrage zu erhöhen und gleichzeitig ein erforderliches Dokument zu finden.
Indizierung in Apache Solr
In Apache Solr können wir verschiedene Dokumentformate wie XML, CSV, PDF usw. indizieren (hinzufügen, löschen, ändern). Wir können dem Solr-Index auf verschiedene Arten Daten hinzufügen.
In diesem Kapitel werden wir die Indizierung diskutieren -
- Verwenden des Solr-Webinterfaces.
- Verwenden einer der Client-APIs wie Java, Python usw.
- Verwendung der post tool.
In diesem Kapitel wird erläutert, wie Sie mithilfe verschiedener Schnittstellen (Befehlszeile, Webschnittstelle und Java-Client-API) Daten zum Index von Apache Solr hinzufügen.
Hinzufügen von Dokumenten mit dem Post-Befehl
Solr hat eine post Befehl in seiner bin/Verzeichnis. Mit diesem Befehl können Sie verschiedene Dateiformate wie JSON, XML, CSV in Apache Solr indizieren.
Durchsuchen Sie die bin Verzeichnis von Apache Solr und führen Sie die –h option des post-Befehls, wie im folgenden Codeblock gezeigt.
[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h
Wenn Sie den obigen Befehl ausführen, erhalten Sie eine Liste der Optionen von post command, Wie nachfolgend dargestellt.
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'
Beispiel
Angenommen, wir haben eine Datei mit dem Namen sample.csv mit folgendem Inhalt (in der bin Verzeichnis).
Studenten ID | Vorname | Nachname | Telefon | Stadt |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
Der obige Datensatz enthält persönliche Daten wie Studenten-ID, Vorname, Nachname, Telefon und Stadt. Die CSV-Datei des Datensatzes wird unten angezeigt. Hier müssen Sie beachten, dass Sie das Schema erwähnen und seine erste Zeile dokumentieren müssen.
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
Sie können diese Daten unter dem genannten Kern indizieren sample_Solr Verwendung der post Befehl wie folgt -
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
Bei Ausführung des obigen Befehls wird das angegebene Dokument unter dem angegebenen Kern indiziert, wodurch die folgende Ausgabe generiert wird.
/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
Besuchen Sie die Homepage von Solr Web UI unter der folgenden URL:
http://localhost:8983/
Wählen Sie den Kern aus Solr_sample. Standardmäßig ist der Anforderungshandler/selectund die Abfrage lautet ":". Klicken Sie ohne Änderungen aufExecuteQuery Schaltfläche am unteren Rand der Seite.
Beim Ausführen der Abfrage können Sie den Inhalt des indizierten CSV-Dokuments im JSON-Format (Standard) beobachten, wie im folgenden Screenshot gezeigt.
Note - Auf die gleiche Weise können Sie andere Dateiformate wie JSON, XML, CSV usw. indizieren.
Hinzufügen von Dokumenten über das Solr-Webinterface
Sie können Dokumente auch über die von Solr bereitgestellte Weboberfläche indizieren. Lassen Sie uns sehen, wie das folgende JSON-Dokument indiziert wird.
[
{
"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",
}
]
Schritt 1
Öffnen Sie die Solr-Weboberfläche unter der folgenden URL:
http://localhost:8983/
Step 2
Wählen Sie den Kern aus Solr_sample. Standardmäßig sind die Werte der Felder Anforderungshandler, Common Within, Overwrite und Boost / update, 1000, true und 1.0, wie im folgenden Screenshot gezeigt.
Wählen Sie nun das gewünschte Dokumentformat aus JSON, CSV, XML usw. aus. Geben Sie das zu indizierende Dokument in den Textbereich ein und klicken Sie auf Submit Document Schaltfläche, wie im folgenden Screenshot gezeigt.
Hinzufügen von Dokumenten mithilfe der Java Client-API
Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenAddingDocument.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");
}
}
Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:
[Hadoop@localhost bin]$ javac AddingDocument
[Hadoop@localhost bin]$ java AddingDocument
Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.
Documents added