Was ist Apache Solr
Apache Solr ist eine der beliebtesten NoSQL-Datenbanken, mit der Daten gespeichert und nahezu in Echtzeit abgefragt werden können. Es basiert auf Apache Lucene und ist in Java geschrieben. Genau wie Elasticsearch unterstützt es Datenbankabfragen über REST-APIs. Dies bedeutet, dass wir einfache HTTP-Aufrufe verwenden und HTTP-Methoden wie GET, POST, PUT, DELETE usw. verwenden können. auf Daten zugreifen. Es bietet auch eine Option zum Abrufen von Daten in Form von XML oder JSON über die REST-APIs.
Architektur: Apache Solr
Bevor wir mit Apache Solr arbeiten können, müssen wir die Komponenten verstehen, die Apache Solr ausmachen. Schauen wir uns einige Komponenten an, die es enthält:
Apache Solr-Architektur
Beachten Sie, dass in der obigen Abbildung nur die Hauptkomponenten für Solr gezeigt werden. Lassen Sie uns auch hier ihre Funktionsweise verstehen:
- Request-Handler: Die Anfragen, die ein Client an Solr stellt, werden von einem Request-Handler verwaltet. Die Anfrage kann alles sein, vom Hinzufügen eines neuen Datensatzes bis zum Aktualisieren eines Index in Solr. Handler identifizieren die Art der Anfrage anhand der HTTP-Methode, die bei der Anfragezuordnung verwendet wird.
- Suchkomponente: Dies ist eine der wichtigsten Komponenten, für die Solr bekannt ist. Die Suchkomponente kümmert sich um suchbezogene Operationen wie Unschärfe, Rechtschreibprüfung, Begriffsabfragen usw.
- Abfrageparser: Dies ist die Komponente, die die Abfrage, die ein Client an den Request-Handler übergibt, tatsächlich analysiert und eine Abfrage in mehrere Teile zerlegt, die von der zugrunde liegenden Engine verstanden werden können
- Antwortschreiber: Diese Komponente ist für die Verwaltung des Ausgabeformats für die an die Engine übergebenen Abfragen verantwortlich. Response Writer ermöglicht es uns, eine Ausgabe in verschiedenen Formaten wie XML, JSON usw. bereitzustellen.
- Analysator/Tokenizer: Lucene Engine versteht Abfragen in Form mehrerer Token to. Solr analysiert die Abfrage, zerlegt sie in mehrere Token und übergibt sie an die Lucene Engine.
- Auftragsverarbeiter aktualisieren: Wenn eine Abfrage ausgeführt wird und Operationen wie das Aktualisieren eines Index und der damit verbundenen Daten ausführt, ist die Komponente Update Request Processor für die Verwaltung der Daten im Index und deren Änderung verantwortlich.
Erste Schritte mit Apache Solr
Um Apache Solr verwenden zu können, muss es auf dem Computer installiert sein. Lesen Sie dazu Apache Solr unter Ubuntu installieren.
Stellen Sie sicher, dass Sie über eine aktive Solr-Installation verfügen, wenn Sie Beispiele ausprobieren möchten, die wir später in der Lektion vorstellen, und die Admin-Seite ist auf localhost erreichbar:
Apache Solr-Homepage
Einfügen von Daten
Betrachten wir zunächst eine Sammlung in Solr, die wir als linux_hint_collection. Diese Sammlung muss nicht explizit definiert werden, da beim Einfügen des ersten Objekts die Sammlung automatisch erstellt wird. Versuchen wir unseren ersten REST-API-Aufruf, um ein neues Objekt in die Sammlung namens einzufügen linux_hint_collection.
Einfügen von Daten
curl -X POST -H 'Inhaltstyp: Anwendung/json''http://localhost:8983/solr/linux_hint_collection/update/json/docs' --data-binary '
"id": "iduye",
"name": "Shubham"
'
Folgendes erhalten wir mit diesem Befehl zurück:
Befehl zum Einfügen von Daten in Solr
Daten können auch über die zuvor betrachtete Solr-Homepage eingefügt werden. Versuchen wir es hier, damit die Dinge klar sind:
Daten über Solr-Homepage einfügen
Da Solr eine hervorragende Möglichkeit zur Interaktion mit HTTP-RESTful-APIs bietet, werden wir von nun an die DB-Interaktion mit denselben APIs demonstrieren und uns nicht mehr viel auf das Einfügen von Daten über die Solr-Webseite konzentrieren.
Alle Sammlungen auflisten
Wir können alle Sammlungen in Apache Solr auch mit einer REST-API auflisten. Hier ist der Befehl, den wir verwenden können:
Alle Sammlungen auflisten
curl http://localhost:8983/solr/admin/collections?Aktionen=LIST&wt=jsonSehen wir uns die Ausgabe für diesen Befehl an:
Wir sehen hier zwei Kollektionen, die in unserer Solr-Installation vorhanden sind.
Objekt nach ID abrufen
Lassen Sie uns nun sehen, wie wir Daten aus der Solr-Sammlung mit einer bestimmten ID abrufen können. Hier ist der REST-API-Befehl:
Objekt nach ID abrufen
curl http://localhost:8983/solr/linux_hint_collection/get?id=iduyeFolgendes erhalten wir mit diesem Befehl zurück:
Alle Daten abrufen
In unserer letzten REST-API haben wir Daten mit einer bestimmten ID abgefragt. Dieses Mal erhalten wir alle Daten, die in unserer Solr-Sammlung vorhanden sind.
Objekt nach ID abrufen
curl http://localhost:8983/solr/linux_hint_collection/select?q=*:*Folgendes erhalten wir mit diesem Befehl zurück:
Beachten Sie, dass wir '*:*' im Abfrageparameter verwendet haben. Dies gibt an, dass Solr alle in der Sammlung vorhandenen Daten zurückgeben soll. Selbst wenn wir festgelegt haben, dass alle Daten zurückgegeben werden sollen, versteht Solr, dass die Sammlung möglicherweise große Datenmengen enthält und so, es werden nur die ersten 10 Dokumente zurückgegeben.
Alle Daten löschen
Bisher verwendeten alle APIs, die wir ausprobiert haben, ein JSON-Format. Dieses Mal versuchen wir es mit dem XML-Abfrageformat. Die Verwendung des XML-Formats ist JSON sehr ähnlich, da XML auch selbstbeschreibend ist.
Versuchen wir einen Befehl zum Löschen aller Daten, die wir in unserer Sammlung haben.
Alle Daten löschen
curl "http://localhost:8983/solr/linux_hint_collection/update?commit=true" -H "Content-Type: text/xml" --data-binary "*:*"Folgendes erhalten wir mit diesem Befehl zurück:
Alle Daten mit XML-Abfrage löschen
Wenn wir nun erneut versuchen, alle Daten abzurufen, sehen wir, dass jetzt keine Daten verfügbar sind:
Alle Daten abrufen
Gesamtobjektanzahl
Als letzten CURL-Befehl sehen wir uns einen Befehl an, mit dem wir die Anzahl der Objekte finden können, die in einem Index vorhanden sind. Hier ist der Befehl dafür:
Gesamtobjektanzahl
curl http://localhost:8983/solr/linux_hint_collection/query?Debug=Abfrage&q=*:*Folgendes erhalten wir mit diesem Befehl zurück:
Anzahl der Objekte zählen
Fazit
In dieser Lektion haben wir uns angesehen, wie wir Apache Solr verwenden und Abfragen mit curl sowohl im JSON- als auch im XML-Format übergeben können. Wir haben auch gesehen, dass das Solr-Admin-Panel genauso nützlich ist wie alle Curl-Befehle, die wir studiert haben.