Elasticsearch: Unterschied zwischen den Versionen
K (weitere Kategorien) |
KKeine Bearbeitungszusammenfassung |
||
Zeile 14: | Zeile 14: | ||
Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden. Aktuell wird die Version 8.x noch nicht von der Nextcloud-Volltextsuche unterstützt! | Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden. Aktuell wird die Version 8.x noch nicht von der Nextcloud-Volltextsuche unterstützt! | ||
<syntaxhighlight lang=shell> | |||
wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz" | |||
tar xzf elasticsearch-7.17.7-linux-x86_64.tar.gz | |||
rm elasticsearch-7.17.7-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-7.17.7/config elastic | |||
mkdir ~/elastic/logs | |||
mkdir ~/elastic/data | |||
</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-7.17.7/ | |||
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-7.17.7/ | |||
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 60: | ||
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-7.17.7/ | |||
./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. | ||
Zeile 79: | Zeile 91: | ||
''~/bin/start-elastic'' | ''~/bin/start-elastic'' | ||
<syntaxhighlight lang=shell line> | |||
#!/bin/bash | |||
export HOME=/home/pacs/xyz00/users/elastic | |||
export ES_PATH_CONF=$HOME/elastic/config | |||
export ES_JAVA_OPTS="-Xms1g -Xmx1g" | |||
cd $HOME | |||
mkdir -p $HOME/var | |||
cd $HOME/elasticsearch-7.17.7 | |||
exec ./bin/elasticsearch & | |||
echo $! >$HOME/var/elasticsearch.pid | |||
</syntaxhighlight> | |||
''~/bin/stop-elastic'' | ''~/bin/stop-elastic'' | ||
<syntaxhighlight lang=shell line> | |||
#!/bin/bash | |||
export HOME=/home/pacs/xyz00/users/elastic | |||
kill $( cat $HOME/var/elasticsearch.pid ) | |||
</syntaxhighlight> | |||
''~/.monitrc'' | ''~/.monitrc'' | ||
<syntaxhighlight lang=shell line> | |||
set daemon 60 with start delay 10 | |||
set logfile /home/pacs/xyz00/users/elastic/var/monit.log | |||
set idfile /home/pacs/xyz00/users/elastic/var/monit.id | |||
set statefile /home/pacs/xyz00/users/elastic/var/monit.state | |||
set mailserver localhost | |||
set mail-format { from: monit@xyz00.hostsharing.net } | |||
set httpd port 39008 address localhost | |||
allow elasticadmin:ein-monit-passwort | |||
check process elasticsearch with pidfile /home/pacs/xyz00/users/elastic/var/elasticsearch.pid | |||
start program "/home/pacs/xyz00/users/elastic/bin/start-elastic" | |||
stop program "/home/pacs/xyz00/users/elastic/bin/stop-elastic" | |||
</syntaxhighlight> | |||
''crontab -l'' | ''crontab -l'' | ||
<syntaxhighlight lang=shell line> | |||
# m h dom mon dow command | |||
HOME=/home/pacs/xyz00/users/elastic | |||
@reboot rm -f $HOME/.monit.pid && /usr/bin/monit -c $HOME/.monitrc | |||
</syntaxhighlight> | |||
== Update durchführen == | == Update durchführen == | ||
Zeile 125: | Zeile 145: | ||
als Benutzer xyz00-elastic: | als Benutzer xyz00-elastic: | ||
<syntaxhighlight lang=shell line> | |||
# TODO: neue tar.gz Datei herunterladen und entpacken, siehe oben. | |||
# Es gibt ein neues Verzeichnis $HOME/elasticsearch-7.16.1 | |||
killall monit # Stoppe monit | |||
~/bin/stop-elastic | |||
# 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. | |||
# TODO: Bearbeite ~/bin/start-elastic und ändere den Pfad auf die | |||
# neue Version von elasticsearch | |||
/usr/bin/monit -c $HOME/.monitrc # starte monit neu, und das | |||
# startet dann auch elasticsearch | |||
# TODO: Falls Plugins verwendet werden, müssen diese wieder | |||
# installiert werden. Siehe oben. | |||
# Elasticsearch nachher neustarten | |||
</syntaxhighlight> | |||
---- | ---- |
Version vom 1. Juli 2024, 11:14 Uhr
Elasticsearch
Elasticsearch ist ein weit verbreiteter Suchserver für die Indizierung von Volltext oder von Log-Dateien. Nach einer Lizenzänderung ist Elasticsearch leider keine freie Software im Sinne der Opensource Initiative (OSI) mehr.
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. Aktuell wird die Version 8.x noch nicht von der Nextcloud-Volltextsuche unterstützt!
wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz"
tar xzf elasticsearch-7.17.7-linux-x86_64.tar.gz
rm elasticsearch-7.17.7-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-7.17.7/config elastic
mkdir ~/elastic/logs
mkdir ~/elastic/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.
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-7.17.7/
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-7.17.7/
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-7.17.7/
./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.
Monitoring
Ein Start- und ein Stop-Skript und eine Monit-Konfiguration sorgen für den automatischen Start des Dienstes nach einem Reboot.
~/bin/start-elastic
#!/bin/bash
export HOME=/home/pacs/xyz00/users/elastic
export ES_PATH_CONF=$HOME/elastic/config
export ES_JAVA_OPTS="-Xms1g -Xmx1g"
cd $HOME
mkdir -p $HOME/var
cd $HOME/elasticsearch-7.17.7
exec ./bin/elasticsearch &
echo $! >$HOME/var/elasticsearch.pid
~/bin/stop-elastic
#!/bin/bash
export HOME=/home/pacs/xyz00/users/elastic
kill $( cat $HOME/var/elasticsearch.pid )
~/.monitrc
set daemon 60 with start delay 10
set logfile /home/pacs/xyz00/users/elastic/var/monit.log
set idfile /home/pacs/xyz00/users/elastic/var/monit.id
set statefile /home/pacs/xyz00/users/elastic/var/monit.state
set mailserver localhost
set mail-format { from: monit@xyz00.hostsharing.net }
set httpd port 39008 address localhost
allow elasticadmin:ein-monit-passwort
check process elasticsearch with pidfile /home/pacs/xyz00/users/elastic/var/elasticsearch.pid
start program "/home/pacs/xyz00/users/elastic/bin/start-elastic"
stop program "/home/pacs/xyz00/users/elastic/bin/stop-elastic"
crontab -l
# m h dom mon dow command
HOME=/home/pacs/xyz00/users/elastic
@reboot rm -f $HOME/.monit.pid && /usr/bin/monit -c $HOME/.monitrc
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 7.14.1 auf 7.16.1 funktioniert. Bitte am besten erst auf einer Testinstallation testen!
als Benutzer xyz00-elastic:
# TODO: neue tar.gz Datei herunterladen und entpacken, siehe oben.
# Es gibt ein neues Verzeichnis $HOME/elasticsearch-7.16.1
killall monit # Stoppe monit
~/bin/stop-elastic
# 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.
# TODO: Bearbeite ~/bin/start-elastic und ändere den Pfad auf die
# neue Version von elasticsearch
/usr/bin/monit -c $HOME/.monitrc # starte monit neu, und das
# startet dann auch elasticsearch
# TODO: Falls Plugins verwendet werden, müssen diese wieder
# installiert werden. Siehe oben.
# Elasticsearch nachher neustarten