In diesem Artikel zeige ich die Installation von Elasticsearch unter Debian 13 (Trixie) anhand einer echten Serverinstallation. Dabei gehe ich auch auf typische Fehler und Besonderheiten ein, die in der Praxis häufig auftreten.
Was ist Elasticsearch?
Elasticsearch ist eine verteilte Such- und Analyse-Engine auf Basis von Apache Lucene.
Typische Einsatzgebiete:
- Volltextsuche für Webseiten
- Log-Management (ELK Stack)
- Monitoring und Observability
- Business Intelligence
- Vektor-Suche für KI-Anwendungen
- Wissensdatenbanken
- Dokumentensuche
Besonders interessant ist Elasticsearch als Suchbackend für eigene Anwendungen oder als Ergänzung zu KI-Systemen wie Ollama, OpenWebUI oder Retrieval-Augmented-Generation-Systemen (RAG).
Voraussetzungen
Für eine kleine Installation empfiehlt sich:
KomponenteEmpfehlungCPU2 vCPUsRAMmindestens 4 GBSpeicherSSDBetriebssystemDebian 13Root-ZugrifferforderlichSystem aktualisieren
Zunächst sollte das System auf den aktuellen Stand gebracht werden:
apt update apt upgrade -y
Anschließend empfiehlt sich ein Neustart:
reboot
Wichtiger Hinweis zu Root und sudo
Viele Anleitungen verwenden Befehle mit sudo.
Auf vielen Debian-Servern arbeitet man jedoch direkt als root.
Prüfen:
whoami
Ausgabe:
root
In diesem Fall können alle sudo-Befehle einfach ohne sudo ausgeführt werden.
Elasticsearch Repository einrichten
GPG-Schlüssel importieren
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | \ gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Repository hinzufügen
Falls der Befehl tee auf dem System nicht verfügbar ist, kann die Datei direkt erstellt werden:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/9.x/apt stable main" > /etc/apt/sources.list.d/elastic-9.x.list
Paketlisten aktualisieren:
apt update
Elasticsearch installieren
apt install elasticsearch -y
Die Installation kann einige Minuten dauern.
Kernelparameter anpassen
Elasticsearch benötigt erhöhte Speicher-Mappings.
Datei erstellen:
nano /etc/sysctl.d/99-elasticsearch.conf
Inhalt:
vm.max_map_count = 262144
Aktivieren:
sysctl --system
Prüfen:
sysctl vm.max_map_count
Ausgabe:
vm.max_map_count = 262144
Elasticsearch konfigurieren
Datei öffnen:
nano /etc/elasticsearch/elasticsearch.yml
Für einen Einzelserver genügt:
cluster.name: my-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node
Heap-Speicher konfigurieren
Die JVM benötigt einen sinnvoll dimensionierten Heap.
Server mit 4 GB RAM:
-Xms2g -Xmx2g
Server mit 8 GB RAM:
-Xms4g -Xmx4g
Die Einstellungen befinden sich normalerweise unter:
/etc/elasticsearch/jvm.options
oder
/etc/elasticsearch/jvm.options.d/
Wichtig:
- Xms und Xmx müssen identisch sein.
- Maximal 50 % des verfügbaren RAM verwenden.
Elasticsearch starten
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Status prüfen:
systemctl status elasticsearch
Beispiel:
Active: active (running)
Besonderheit: elasticsearch-Befehl nicht gefunden
Viele Administratoren erwarten:
elasticsearch --version
Dies führt häufig zu:
-bash: elasticsearch: Kommando nicht gefunden
Der Grund:
Der Elasticsearch-Binärpfad liegt nicht im PATH.
Stattdessen:
/usr/share/elasticsearch/bin/elasticsearch --version
Passwort für den elastic-Benutzer setzen
Neuere Elasticsearch-Versionen aktivieren die Sicherheitsfunktionen standardmäßig.
Passwort zurücksetzen:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Interaktiv:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
Achtung:
Ein häufiger Fehler ist ein falsch gesetzter Zeilenumbruch:
Falsch:
/usr/share/elasticsearch/bin/elasticsearch-reset-password \ -u elastic
Richtig:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Verbindung testen
Falls TLS aktiviert ist:
curl -k https://localhost:9200
Mit Benutzer:
curl -k -u elastic https://localhost:9200
oder
curl -k -u elastic:PASSWORT https://localhost:9200
Clusterstatus prüfen
curl -k -u elastic:PASSWORT \ https://localhost:9200/_cluster/health?pretty
Gesunder Cluster:
{
"status" : "green"
}
Firewall absichern
Bei Verwendung von UFW:
Nur interne Netze erlauben:
ufw allow from 192.168.0.0/24 to any port 9200 proto tcp
Port 9200 sollte niemals ungeschützt aus dem Internet erreichbar sein.
Beispielindex anlegen
Index erstellen:
curl -k -u elastic:PASSWORT \ -X PUT https://localhost:9200/mein-index
Dokument speichern:
curl -k -u elastic:PASSWORT \
-X POST https://localhost:9200/mein-index/_doc \
-H "Content-Type: application/json" \
-d '
{
"titel": "Hallo Elasticsearch",
"inhalt": "Dies ist ein Test."
}'
Logs anzeigen
Systemd-Logs:
journalctl -u elasticsearch -f
Direkte Elasticsearch-Logs:
tail -f /var/log/elasticsearch/*.log
Häufige Fehler
sudo: Kommando nicht gefunden
Du arbeitest bereits als root.
Einfach sudo entfernen.
tee: Kommando nicht gefunden
Repository-Datei direkt mit echo > datei erstellen.
elasticsearch: Kommando nicht gefunden
Elasticsearch befindet sich unter:
/usr/share/elasticsearch/bin/
Dienst startet nicht
Log prüfen:
journalctl -xeu elasticsearch
Oft sind folgende Ursachen verantwortlich:
- Zu wenig RAM
- vm.max_map_count nicht gesetzt
- Fehler in elasticsearch.yml
- Portkonflikte
Die Installation von Elasticsearch unter Debian 13 ist grundsätzlich unkompliziert. Die häufigsten Probleme entstehen nicht durch Elasticsearch selbst, sondern durch Unterschiede zwischen verschiedenen Debian-Installationen, fehlende PATH-Einträge oder falsch übernommene Befehle aus allgemeinen Linux-Anleitungen.
Wer die oben beschriebenen Schritte befolgt, erhält eine moderne, sichere und leistungsfähige Suchplattform, die sich sowohl für klassische Suchanwendungen als auch für moderne KI-Projekte hervorragend eignet.
Für deinen Blog würde ich zusätzlich noch einen Abschnitt „Elasticsearch zusammen mit Kibana installieren“ ergänzen, da die meisten Leser nach der Elasticsearch-Installation direkt mit einer Weboberfläche weiterarbeiten möchten.