Elasticsearch: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
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!


  wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz"
<syntaxhighlight lang=shell>
  tar xzf elasticsearch-7.17.7-linux-x86_64.tar.gz  
wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz"
  rm 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:


  mkdir ~/elastic/
<syntaxhighlight lang=shell>
  mv elasticsearch-7.17.7/config elastic
mkdir ~/elastic/
  mkdir ~/elastic/logs
mv elasticsearch-7.17.7/config elastic
  mkdir ~/elastic/data
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.


  http.port: 39200
<syntaxhighlight lang=yaml line>
  transport.tcp.port: 39202
http.port: 39200
  xpack.security.enabled: true
transport.tcp.port: 39202
  discovery.type: single-node
xpack.security.enabled: true
  path.data: /home/pacs/xyz00/users/elastic/elastic/data
discovery.type: single-node
  path.logs: /home/pacs/xyz00/users/elastic/elastic/logs
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.  


  cd elasticsearch-7.17.7/
<syntaxhighlight lang=shell>
  export ES_PATH_CONF=$HOME/elastic/config
cd elasticsearch-7.17.7/
  ES_JAVA_OPTS="-Xms1g -Xmx1g" ./bin/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:


  cd elasticsearch-7.17.7/
<syntaxhighlight lang=shell>
  export ES_PATH_CONF=$HOME/elastic/config
cd elasticsearch-7.17.7/
  ./bin/elasticsearch-setup-passwords auto
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:


  export ES_PATH_CONF=$HOME/elastic/config
<syntaxhighlight lang=shell>
  cd elasticsearch-7.17.7/
export ES_PATH_CONF=$HOME/elastic/config
  ./bin/elasticsearch-plugin install ingest-attachment
cd elasticsearch-7.17.7/
  -> Installing ingest-attachment
./bin/elasticsearch-plugin install ingest-attachment
  -> Downloading ingest-attachment from elastic
-> Installing ingest-attachment
  [=================================================] 100%    
-> Downloading ingest-attachment from elastic
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[=================================================] 100%    
  @    WARNING: plugin requires additional permissions    @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: plugin requires additional permissions    @
  * java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  * java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
  * java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission accessDeclaredMembers
  * java.lang.reflect.ReflectPermission suppressAccessChecks
* java.lang.RuntimePermission getClassLoader
  * java.security.SecurityPermission createAccessControlContext
* java.lang.reflect.ReflectPermission suppressAccessChecks
  See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
* java.security.SecurityPermission createAccessControlContext
  for descriptions of what these permissions allow and the associated risks.
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
Continue with installation? [y/N]y
  -> Please restart Elasticsearch to activate any plugins installed
-> 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''


  #!/bin/bash
<syntaxhighlight lang=shell line>
  export HOME=/home/pacs/xyz00/users/elastic
#!/bin/bash
  export ES_PATH_CONF=$HOME/elastic/config
export HOME=/home/pacs/xyz00/users/elastic
  export ES_JAVA_OPTS="-Xms1g -Xmx1g"
export ES_PATH_CONF=$HOME/elastic/config
  cd $HOME
export ES_JAVA_OPTS="-Xms1g -Xmx1g"
  mkdir -p $HOME/var
cd $HOME
  cd $HOME/elasticsearch-7.17.7
mkdir -p $HOME/var
  exec ./bin/elasticsearch &
cd $HOME/elasticsearch-7.17.7
  echo $! >$HOME/var/elasticsearch.pid
exec ./bin/elasticsearch &
echo $! >$HOME/var/elasticsearch.pid
</syntaxhighlight>


''~/bin/stop-elastic''
''~/bin/stop-elastic''


  #!/bin/bash
<syntaxhighlight lang=shell line>
  export HOME=/home/pacs/xyz00/users/elastic
#!/bin/bash
  kill $( cat $HOME/var/elasticsearch.pid )
export HOME=/home/pacs/xyz00/users/elastic
kill $( cat $HOME/var/elasticsearch.pid )
</syntaxhighlight>


''~/.monitrc''
''~/.monitrc''


  set daemon 60 with start delay 10
<syntaxhighlight lang=shell line>
  set logfile /home/pacs/xyz00/users/elastic/var/monit.log
set daemon 60 with start delay 10
  set idfile /home/pacs/xyz00/users/elastic/var/monit.id
set logfile /home/pacs/xyz00/users/elastic/var/monit.log
  set statefile /home/pacs/xyz00/users/elastic/var/monit.state
set idfile /home/pacs/xyz00/users/elastic/var/monit.id
  set mailserver localhost
set statefile /home/pacs/xyz00/users/elastic/var/monit.state
  set mail-format { from: monit@xyz00.hostsharing.net }
set mailserver localhost
  set httpd port 39008 address localhost
set mail-format { from: monit@xyz00.hostsharing.net }
      allow elasticadmin:ein-monit-passwort
set httpd port 39008 address localhost
  check process elasticsearch with pidfile /home/pacs/xyz00/users/elastic/var/elasticsearch.pid
    allow elasticadmin:ein-monit-passwort
      start program "/home/pacs/xyz00/users/elastic/bin/start-elastic"
check process elasticsearch with pidfile /home/pacs/xyz00/users/elastic/var/elasticsearch.pid
      stop program "/home/pacs/xyz00/users/elastic/bin/stop-elastic"
    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''


  # m h  dom mon dow  command
<syntaxhighlight lang=shell line>
  HOME=/home/pacs/xyz00/users/elastic
# m h  dom mon dow  command
  @reboot rm -f $HOME/.monit.pid && /usr/bin/monit -c $HOME/.monitrc
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:


  # TODO: neue tar.gz Datei herunterladen und entpacken, siehe oben.  
<syntaxhighlight lang=shell line>
  #      Es gibt ein neues Verzeichnis $HOME/elasticsearch-7.16.1
# TODO: neue tar.gz Datei herunterladen und entpacken, siehe oben.  
  killall monit  # Stoppe monit
#      Es gibt ein neues Verzeichnis $HOME/elasticsearch-7.16.1
  ~/bin/stop-elastic
killall monit  # Stoppe monit
  # TODO: Falls nicht mit separaten Verzeichnissen gearbeitet wird,  
~/bin/stop-elastic
  #      muss jetzt config und data und logs vom alten elasticsearch
# TODO: Falls nicht mit separaten Verzeichnissen gearbeitet wird,  
  #      in das neue elasticsearch Verzeichnis verschoben werden.
#      muss jetzt config und data und logs vom alten elasticsearch
  # TODO: Bearbeite ~/bin/start-elastic und ändere den Pfad auf die  
#      in das neue elasticsearch Verzeichnis verschoben werden.
  #      neue Version von elasticsearch
# TODO: Bearbeite ~/bin/start-elastic und ändere den Pfad auf die  
  /usr/bin/monit -c $HOME/.monitrc  # starte monit neu, und das  
#      neue Version von elasticsearch
                                    # startet dann auch elasticsearch
/usr/bin/monit -c $HOME/.monitrc  # starte monit neu, und das  
  # TODO: Falls Plugins verwendet werden, müssen diese wieder
                                  # startet dann auch elasticsearch
  #      installiert werden. Siehe oben.
# TODO: Falls Plugins verwendet werden, müssen diese wieder
  #      Elasticsearch nachher neustarten
#      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:

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