Elasticsearch: Unterschied zwischen den Versionen
(Elastic 7.x nutzen) |
Tim (Diskussion | Beiträge) |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Elasticsearch ist ein weit verbreiteter Suchserver für die Indizierung von Volltext oder von Log-Dateien. | Elasticsearch ist ein weit verbreiteter Suchserver für die Indizierung von Volltext oder von Log-Dateien. | ||
Dieses Dokument leitet zur Installation eines Elasticsearch-Server an, der am Localhost-Interface erreichbar ist und für Anwendungen auf dem Server (zum Beispiel [[Nextcloud]] mit Volltextsuche) genutzt werden kann. Durch eine Proxy-Konfiguration in einer ''.htaccess''-Datei kann der Server über das Internet erreichbar gemacht werden. | Nach einer Lizenzänderung im Jahr 2021 war Elasticsearch leider keine freie Software im Sinne der Opensource Initiative (OSI) mehr. | ||
Im Jahr 2024 wurde die Lizenz nun aber wieder geändert, auf AGPL [https://www.elastic.co/de/blog/elasticsearch-is-open-source-again]. | |||
Dieses Dokument leitet zur Installation eines Elasticsearch-Server an, der am Localhost-Interface erreichbar ist | |||
und für Anwendungen auf dem Server (zum Beispiel [[Nextcloud]] mit Volltextsuche) genutzt werden kann. | |||
Durch eine Proxy-Konfiguration in einer ''.htaccess''-Datei kann der Server über das Internet erreichbar gemacht werden. | |||
== Installation == | == Installation == | ||
Zeile 12: | Zeile 16: | ||
Im ersten Schritt wird die Software (als ''tar.gz''-Archiv) heruntergeladen und entpackt. | Im ersten Schritt wird die Software (als ''tar.gz''-Archiv) heruntergeladen und entpackt. | ||
Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden. | Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden. | ||
<syntaxhighlight lang=shell> | |||
wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-x86_64.tar.gz" | |||
tar xzf elasticsearch-8.15.2-linux-x86_64.tar.gz | |||
rm elasticsearch-8.15.2-linux-x86_64.tar.gz | |||
</syntaxhighlight> | |||
Für zukünftige Updates ist zu empfehlen, die Verzeichnisse config, data und logs separat anzulegen: | Für zukünftige Updates ist zu empfehlen, die Verzeichnisse config, data und logs separat anzulegen: | ||
<syntaxhighlight lang=shell> | |||
mkdir ~/elastic/ | |||
mv elasticsearch-8.15.2/config elastic | |||
mkdir ~/elastic/logs | |||
mkdir ~/elastic/data | |||
</syntaxhighlight> | |||
Wir setzen einen symbolischen Link, um bei Updates nicht alle Skripte ändern zu müssen: | |||
<syntaxhighlight lang=shell> | |||
ln -s elasticsearch-8.15.2 elasticsearch | |||
</syntaxhighlight> | |||
In der Konfigurationdatei ''~/elastic/config/elasticsearch.yml'' werden folgende Optionen gesetzt: Die beiden Ports, auf denen das System erreichbar ist und die ''security''-Option für das Passwort-Login. Außerdem die Pfade für logs und data. | In der Konfigurationdatei ''~/elastic/config/elasticsearch.yml'' werden folgende Optionen gesetzt: | ||
Die beiden Ports, auf denen das System erreichbar ist und die ''security''-Option für das Passwort-Login. Außerdem die Pfade für logs und data. | |||
<syntaxhighlight lang=yaml line> | |||
http.port: 39200 | |||
transport.tcp.port: 39202 | |||
xpack.security.enabled: true | |||
discovery.type: single-node | |||
path.data: /home/pacs/xyz00/users/elastic/elastic/data | |||
path.logs: /home/pacs/xyz00/users/elastic/elastic/logs | |||
</syntaxhighlight> | |||
Dann wird der Dienst provisorisch gestartet. | Dann wird der Dienst provisorisch gestartet. | ||
<syntaxhighlight lang=shell> | |||
cd ~/elasticsearch | |||
export ES_PATH_CONF=$HOME/elastic/config | |||
ES_JAVA_OPTS="-Xms1g -Xmx1g" ./bin/elasticsearch | |||
</syntaxhighlight> | |||
In einer zweiten Shell erzeuge ich mit dem Kommando ''elasticsearch-setup-passwords'' zufällige Passworte für die vordefinierten Account in Elasticsearch: | In einer zweiten Shell erzeuge ich mit dem Kommando ''elasticsearch-setup-passwords'' zufällige Passworte für die vordefinierten Account in Elasticsearch: | ||
<syntaxhighlight lang=shell> | |||
cd ~/elasticsearch | |||
export ES_PATH_CONF=$HOME/elastic/config | |||
./bin/elasticsearch-setup-passwords auto | |||
</syntaxhighlight> | |||
Die Ausgabe mit den generierten Passwörtern sichern! | Die Ausgabe mit den generierten Passwörtern sichern! | ||
Zeile 50: | Zeile 71: | ||
Für Nextcloud ist noch das Plugin ingest-attachment Plugin erforderlich: | Für Nextcloud ist noch das Plugin ingest-attachment Plugin erforderlich: | ||
<syntaxhighlight lang=shell> | |||
export ES_PATH_CONF=$HOME/elastic/config | |||
cd elasticsearch/ | |||
./bin/elasticsearch-plugin install ingest-attachment | |||
-> Installing ingest-attachment | |||
-> Downloading ingest-attachment from elastic | |||
[=================================================] 100% | |||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |||
@ WARNING: plugin requires additional permissions @ | |||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | |||
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms | |||
* java.lang.RuntimePermission accessDeclaredMembers | |||
* java.lang.RuntimePermission getClassLoader | |||
* java.lang.reflect.ReflectPermission suppressAccessChecks | |||
* java.security.SecurityPermission createAccessControlContext | |||
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html | |||
for descriptions of what these permissions allow and the associated risks. | |||
Continue with installation? [y/N]y | |||
-> Installed ingest-attachment | |||
-> Please restart Elasticsearch to activate any plugins installed | |||
</syntaxhighlight> | |||
Danach sollte Elasticsearch neugestartet werden. | Danach sollte Elasticsearch neugestartet werden. | ||
== | == Systemd Service == | ||
Wir konfigurieren ElasticSearch als Systemd Dienst, um bei Neustarts des Servers automatisch gestartet zu werden: | |||
''~/ | ''~/.config/systemd/user/elasticsearch.service'' | ||
<syntaxhighlight lang=shell line> | |||
[Unit] | |||
Description=ElasticSearch | |||
After=network.target | |||
[Service] | |||
WorkingDirectory=%h/elasticsearch | |||
Environment="ES_JAVA_OPTS=-Xms512m -Xmx512m" | |||
Environment="ES_PATH_CONF=%h/elastic/config" | |||
ExecStart=%h/elasticsearch/bin/elasticsearch | |||
StandardOutput=append:%h/var/log/elasticsearch.log | |||
StandardError=inherit | |||
Restart=always | |||
PrivateTmp=true | |||
NoNewPrivileges=true | |||
[Install] | |||
WantedBy=default.target | |||
</syntaxhighlight> | |||
Diese Schritte werden durchgeführt, um den Dienst zu aktivieren: | |||
<syntaxhighlight lang=shell line> | |||
mkdir -p ~/var/log | |||
systemctl --user enable elasticsearch --now | |||
</syntaxhighlight> | |||
== Update durchführen == | == Update durchführen == | ||
Zeile 121: | Zeile 135: | ||
* https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html | * https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html | ||
Dieses Vorgehensweise hat bei mir für das Upgrade von | Dieses Vorgehensweise hat bei mir für das Upgrade von 8.15.0 auf 8.15.2 funktioniert. Bitte am besten erst auf einer Testinstallation testen! | ||
als Benutzer xyz00-elastic: | als Benutzer xyz00-elastic: | ||
<syntaxhighlight lang=shell line> | |||
export OLD=elasticsearch-8.15.0 | |||
export NEW=elasticsearch-8.15.2 | |||
# neue tar.gz Datei herunterladen und entpacken | |||
# Es gibt ein neues Verzeichnis $HOME/elasticsearch-8.15.2 | |||
wget "https://artifacts.elastic.co/downloads/elasticsearch/${NEW}-linux-x86_64.tar.gz" | |||
tar xzf ${NEW}-linux-x86_64.tar.gz | |||
rm ${NEW}-linux-x86_64.tar.gz | |||
systemctl --user stop elasticsearch | |||
# TODO: Falls nicht mit separaten Verzeichnissen gearbeitet wird, | |||
# muss jetzt config und data und logs vom alten elasticsearch | |||
# in das neue elasticsearch Verzeichnis verschoben werden. | |||
cp -R $OLD/config $NEW | |||
mv $OLD/data $NEW | |||
mv $OLD/logs $NEW | |||
# TODO: Falls Plugins verwendet werden, müssen diese wieder | |||
# installiert werden. Siehe oben. | |||
# symbolischen Link umbiegen | |||
rm elasticsearch | |||
ln -s $NEW elasticsearch | |||
# Elasticsearch wieder starten | |||
systemctl --user start elasticsearch | |||
</syntaxhighlight> | |||
---- | ---- | ||
Zeile 144: | Zeile 173: | ||
[[Kategorie:Installationsanleitungen]] | [[Kategorie:Installationsanleitungen]] | ||
[[Kategorie:Software]] | [[Kategorie:Software]] | ||
[[Kategorie:Java]] | |||
[[Kategorie:Nextcloud]] |
Aktuelle Version vom 5. November 2024, 19:06 Uhr
Elasticsearch
Elasticsearch ist ein weit verbreiteter Suchserver für die Indizierung von Volltext oder von Log-Dateien.
Nach einer Lizenzänderung im Jahr 2021 war Elasticsearch leider keine freie Software im Sinne der Opensource Initiative (OSI) mehr. Im Jahr 2024 wurde die Lizenz nun aber wieder geändert, auf AGPL [1].
Dieses Dokument leitet zur Installation eines Elasticsearch-Server an, der am Localhost-Interface erreichbar ist und für Anwendungen auf dem Server (zum Beispiel Nextcloud mit Volltextsuche) genutzt werden kann. Durch eine Proxy-Konfiguration in einer .htaccess-Datei kann der Server über das Internet erreichbar gemacht werden.
Installation
Für den Dienst wird in HSAdmin ein eigener Shell-User xyz00-elastic mit der Shell /bin/bash angelegt.
Im ersten Schritt wird die Software (als tar.gz-Archiv) heruntergeladen und entpackt.
Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden.
wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-x86_64.tar.gz"
tar xzf elasticsearch-8.15.2-linux-x86_64.tar.gz
rm elasticsearch-8.15.2-linux-x86_64.tar.gz
Für zukünftige Updates ist zu empfehlen, die Verzeichnisse config, data und logs separat anzulegen:
mkdir ~/elastic/
mv elasticsearch-8.15.2/config elastic
mkdir ~/elastic/logs
mkdir ~/elastic/data
Wir setzen einen symbolischen Link, um bei Updates nicht alle Skripte ändern zu müssen:
ln -s elasticsearch-8.15.2 elasticsearch
In der Konfigurationdatei ~/elastic/config/elasticsearch.yml werden folgende Optionen gesetzt: Die beiden Ports, auf denen das System erreichbar ist und die security-Option für das Passwort-Login. Außerdem die Pfade für logs und data.
http.port: 39200
transport.tcp.port: 39202
xpack.security.enabled: true
discovery.type: single-node
path.data: /home/pacs/xyz00/users/elastic/elastic/data
path.logs: /home/pacs/xyz00/users/elastic/elastic/logs
Dann wird der Dienst provisorisch gestartet.
cd ~/elasticsearch
export ES_PATH_CONF=$HOME/elastic/config
ES_JAVA_OPTS="-Xms1g -Xmx1g" ./bin/elasticsearch
In einer zweiten Shell erzeuge ich mit dem Kommando elasticsearch-setup-passwords zufällige Passworte für die vordefinierten Account in Elasticsearch:
cd ~/elasticsearch
export ES_PATH_CONF=$HOME/elastic/config
./bin/elasticsearch-setup-passwords auto
Die Ausgabe mit den generierten Passwörtern sichern!
Für Nextcloud ist noch das Plugin ingest-attachment Plugin erforderlich:
export ES_PATH_CONF=$HOME/elastic/config
cd elasticsearch/
./bin/elasticsearch-plugin install ingest-attachment
-> Installing ingest-attachment
-> Downloading ingest-attachment from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]y
-> Installed ingest-attachment
-> Please restart Elasticsearch to activate any plugins installed
Danach sollte Elasticsearch neugestartet werden.
Systemd Service
Wir konfigurieren ElasticSearch als Systemd Dienst, um bei Neustarts des Servers automatisch gestartet zu werden:
~/.config/systemd/user/elasticsearch.service
[Unit]
Description=ElasticSearch
After=network.target
[Service]
WorkingDirectory=%h/elasticsearch
Environment="ES_JAVA_OPTS=-Xms512m -Xmx512m"
Environment="ES_PATH_CONF=%h/elastic/config"
ExecStart=%h/elasticsearch/bin/elasticsearch
StandardOutput=append:%h/var/log/elasticsearch.log
StandardError=inherit
Restart=always
PrivateTmp=true
NoNewPrivileges=true
[Install]
WantedBy=default.target
Diese Schritte werden durchgeführt, um den Dienst zu aktivieren:
mkdir -p ~/var/log
systemctl --user enable elasticsearch --now
Update durchführen
Siehe auch die Anleitungen:
- https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html
- https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html
Dieses Vorgehensweise hat bei mir für das Upgrade von 8.15.0 auf 8.15.2 funktioniert. Bitte am besten erst auf einer Testinstallation testen!
als Benutzer xyz00-elastic:
export OLD=elasticsearch-8.15.0
export NEW=elasticsearch-8.15.2
# neue tar.gz Datei herunterladen und entpacken
# Es gibt ein neues Verzeichnis $HOME/elasticsearch-8.15.2
wget "https://artifacts.elastic.co/downloads/elasticsearch/${NEW}-linux-x86_64.tar.gz"
tar xzf ${NEW}-linux-x86_64.tar.gz
rm ${NEW}-linux-x86_64.tar.gz
systemctl --user stop elasticsearch
# TODO: Falls nicht mit separaten Verzeichnissen gearbeitet wird,
# muss jetzt config und data und logs vom alten elasticsearch
# in das neue elasticsearch Verzeichnis verschoben werden.
cp -R $OLD/config $NEW
mv $OLD/data $NEW
mv $OLD/logs $NEW
# TODO: Falls Plugins verwendet werden, müssen diese wieder
# installiert werden. Siehe oben.
# symbolischen Link umbiegen
rm elasticsearch
ln -s $NEW elasticsearch
# Elasticsearch wieder starten
systemctl --user start elasticsearch