Apache Solr
Siehe auch
- Ansible-Rolle Apache Solr:
Elastisearch
OpenSearch
Apache Solr ist eine Open-Source-Suchplattform, die auf Apache Lucene basiert. Solr bietet Funktionen wie Volltextsuche, Facettenbildung, Indexierung von Daten und verteilte Suchfunktionen. Solr ist in Java geschrieben und bietet eine RESTful HTTP-Schnittstelle für die Kommunikation.
Solr behandelt Daten als Dokumente, die in einem Schema organisiert sind, und verwendet die Lucene Query Syntax für Abfragen. Es wird oft mit anderen Apache-Projekten wie Apache Nutch, Apache ZooKeeper (für die Konfigurationsverwaltung) oder Apache ManifoldCF eingesetzt.
Apache Solr benötigt eine aktuellere Java 11+-Runtime. Es wird mit einem integrierten Apache Tomcat geliefert.
- Links:
Dokumentation: https://solr.apache.org/guide/solr/latest/
Installation
- Mit dem mitgelieferten Install-Script (nicht empfohlen, da es systemd nicht kennt und das Log-Verzeichnis nicht in
/var/log
setzt).Es wird eine aktuelle Java-Version benötigt:dnf -y install java-latest-openjdk
Dann per Install-Script aus der heruntergeladenen tgz-Datei:sudo bash ./install_solr_service.sh /path/to/solr-9.4.0.tgz -i /opt -d /var/solr -u solr -s solr -p 8983
Verwendung
Manueller Start:
cd /opt/solr
bin/solr -help
sudo -u solr bin/solr start -p 8983
Aufruf des Admin-Interface:
Tomcat (kommt im Bundle mit): http://apache-solr:8983
Cores/Collections
In Apache Solr haben „Cores“ und „Collections“ unterschiedliche Bedeutungen und Anwendungsfälle:
Cores (Kerne):
Ein Solr Core repräsentiert einen einzelnen, unabhängigen Suchindex.
Jeder Core hat seine eigene Konfiguration, Schema und Datenverzeichnis.
Cores werden oft verwendet, um verschiedene Datensätze zu isolieren oder unterschiedliche Suchkonfigurationen innerhalb einer einzelnen Solr-Instanz bereitzustellen.
Cores ermöglichen es, mehrere Indizes unabhängig innerhalb derselben Solr-Serverinstanz zu verwalten.
Collections (Sammlungen):
Eine Solr Collection ist umfasst einen oder mehrere Cores.
Collections werden oft in einer verteilten Solr-Konfiguration verwendet, um horizontale Skalierbarkeit zu ermöglichen.
Jeder Core innerhalb einer Collection repräsentiert einen Shard, und gemeinsam bilden sie einen verteilten Index.
Collections unterstützen Funktionen wie automatische Sharding und Replikation für verbesserte Skalierbarkeit und Ausfallsicherheit.
Core erstellen - per Kommandozeile:
cd bin
solr create -c 'my-core'
Collection erstellen - per URL:
curl "http://solr:8983/solr/admin/collections?action=CREATE&name=my-core&numShards=1"
solrconfig.xml
Die solrconfig.xml wird für jeden Core/jede Collection im conf/
-Unterordner abgelegt, also beispielsweise in /var/solr/data/my-core/conf/solrconfig.xml
.
Plugins / Packages / Module
Bemerkung
Der Package Manager bin/solr package ...
läuft nur in SolrCloud.
cd /opt/solr/lib
wget https://github.com/SearchScale/dataimporthandler/releases/download/v9.4.0/data-import-handler-9.4.0.jar
wget https://github.com/SearchScale/dataimporthandler/releases/download/v9.4.0/mariadb-java-client-2.6.0.jar
chown -R solr:solr /opt/solr
systemctl restart solr
MariaDB Connector/J:
cd /opt/solr/lib
wget https://dlm.mariadb.com/3478935/Connectors/java/connector-java-3.3.0/mariadb-java-client-3.3.0.jar
chown -R solr:solr /opt/solr
systemctl restart solr
Wer Module testen möchte, die über die Config-Datei geladen werden, ruft diese per URL auf: http://solr:8983/solr/<my-core>/select?q=*:*&wt=xslt
Authentication
Um Apache Solr mit Benutzernamen und Passwörtern abzusichern, eine security.json
in /var/solr
abzulegen:
{
"authentication":
{
"blockUnknown": true,
"class": "solr.BasicAuthPlugin",
"credentials":
{
"solr-admin": "IV0EHq1OnNrj6gv...XhgrF8c="
},
"realm": "My Solr users",
"forwardCredentials": false
},
"authorization":
{
"class": "solr.RuleBasedAuthorizationPlugin",
"permissions":
[
{
"name": "all",
"role": "admin"
}
],
"user-role":
{
"solr": "admin"
}
}
}
Mögliche Permission-Names für die Definition eigener Rollen:
all
collection-admin-edit
collection-admin-read
config-edit
config-read
core-admin-edit
core-admin-read
filestore-read
filestore-write
health
metrics-read
package-edit
read
schema-edit
schema-read
security-edit
security-read
update
zk-read
Das Passwort für den Benutzer „solr-admin“ gehasht per Bash so erstellt:
dnf -y install pwgen
PW='linuxfabrik'
SALT=$(pwgen 48 -1)
echo "$(echo -n "$SALT$PW" | sha256sum --binary | xxd -r -p | sha256sum --binary | xxd -r -p | base64 --wrap=1024) $(echo -n "$SALT" | base64 --wrap=1024)"
Bemerkung
The ‚all‘ permission should always be the last permission in your config so that more specific permissions are applied first.
Built on 2024-11-18