Migration des Volltextindexes

enaio® 10.0 »

Updates von Version 9.10 auf die Version 10.0, also von Elasticsearch 7.2.1 auf 7.9.3, sind ohne Anpassungen möglich.

Updates der Version 8.50 benötigen eine Migration und den Zwischenschritt der Aktualisierung auf die Version 9.10 mit Elasticsearch 7.2.1.

Bei der Migration von enaio® 9.0 wird für Elasticsearch 7.9.3 aus dem bestehenden Volltextindex ein neuer Volltextindex erstellt werden. Der neue Volltextindex wird vor dem Update bei laufendem enaio® 9.0 erstellt, beeinflusst den laufenden Betrieb nicht und ist nach der Migration sofort betriebsfähig.

Dazu wird Elasticsearch 7.9.3 auf einem eigenen Rechner mit eigenem Volltextindex installiert.

Über ein Migrationstool wird dann aus dem bestehenden Index der neue Index erstellt. Danach wird das Update von enaio® inklusive der Microservices durchgeführt und Elasticsearch 7.9.3 mit neuem Index in enaio® Version 10.0 eingebunden.

Updates und Migrationen benötigen immer temporär Platz für das Zwischenspeichern. Auf der Festplatte / Partition muss es mindestens 25% freien Speicherplatz geben, da Elasticsearch bei 15% freiem Speicher automatisch in den Read-Only-Modus schaltet.

Bei einer Migration von 9.0/9.10 nach 10 wird der neue Volltextindex nicht größer als der bestehende, allerdings wird während des Updates Platz für Temporärdaten benötigt. Für Migrationen von 8.50 kann der neue Volltextindex unabhängig von den Temporärdaten dauerhaft deutlich größer werden.

Zeiteinschätzungen sind nicht nur abhängig von der Anzahl der Objekte und der Hardware, sondern auch von den Objekttypen. Nach ersten Erfahrungen rechnen wir mit bis zu 2 Stunden für 1 Millionen Objekte.

Migration von 9.0 nach 10.0

Elasticsearch 7.9.3 muss für die Migration auf einem eigenen Rechner installiert werden. Es muss ausreichend Platz temporäre Daten und den umfangreichen Volltextindex zur Verfügung stehen. Dieser sollte auf einem logischen Laufwerk mit hoher Performanz und schnellen Zugriffen liegen.

Bei der Installation werden das Installationsverzeichnis und der HTTP-Port angegeben sowie das Indexverzeichnis. Der Dienst benötigt ein administratives Konto.

Nach dem Start von Elasticsearch 7.9.3 wird über die Batch-Datei elasticsearch-set-initial-passwords.bat aus dem Installationsverzeichnis \bin die Datei built-in.usr im Installationsverzeichnis \config mit einem Passwort für den Benutzer 'elastic' erstellt. Das Passwort wird für das Migrationstool benötigt und für die Konfiguration der Microservices.

Zusätzlich werden die Verbindungsdaten zur bestehenden Elasticsearch-Installation in die Konfigurationsdatei elasticsearch.yml aus dem Installationsverzeichnis \config eingetragen: reindex.remote.whitelist: <es6host>:<httpport>. Elasticsearch muss danach neu gestartet werden.

Migrationstool

Das Migrationstool befindet sich in einem Archiv in folgendem Verzeichnis:

\Tools\prepareFulltextIndexUpdate\

Es wird auf dem Rechner des neuen Volltextindexes von Elasticsearch 7.9.3 entpackt und enthält folgende Dateien:

  • application-prod.yml

    Konfigurationsdatei, in der IP und HTTP-Port der Elasticsearch-Installationen eingetragen werden müssen und das Passwort für den Benutzer 'elastic': target.elasticsearch.pwd: password

    Optional kann die Anzahl der Shards und Replicas angegeben werden. Parameter mit Standard-Wert:

    enaioblue.number_of_shards=4
    enaioblue.number_of_replicas=0

  • migration-10.0.jar

    Ausführbare JAVA-Datei, die über die Batchdatei gestartet wird.

  • prepareFulltextIndexUpdate.bat

    Batchdatei, in die vor dem Start der Pfad zum JDK von Elasticsearch 7.9.3 eingetragen werden muss.

    Beispiel: D:\Elasticsearch7.9.3\jdk\bin\java

Vor dem Start des Migrationstools über die Batchdatei muss der Zugriff von dessen IP auf Elasticsearch 6.2.4 erlaubt werden:

  • Über die Konfigurationsdatei intrafind.yml aus dem Verzeichnis \config von Elasticsearch 6.2.4 den Parameter intrafind.security.subnet um die IP des Migrationstools ergänzen und Elasticsearch 6.2.4 neu starten.

Danach kann der Dienst Elasticsearch 7.9.3 gestartet und die Batchdatei ausgeführt werden. Die Migration protokolliert in das Unterverzeichnis \log.

Das Migrationstool sollte mehrere Male gestartet werden. Dadurch werden jeweils die Daten migriert, die in der Zwischenzeit neu angelegt wurden. Das Migrationstool kann jederzeit ohne Datenverlust manuell beendet werden.

Einbinden in enaio® Version 10.0

Nach dem Update auf enaio® Version 10.0 ist weiterhin Elasticsearch 6.2.4 mit dem alten Volltextindex über die Microservices 'index' und 'search' eingebunden.

Vor dem Start der Microservices wird über deren Konfigurationsdatei application-es.yml IP und HTTP-Port von Elasticsearch 7.9.3 eingetragen und das Passwort des Benutzers 'elastic': elasticsearch.pwd: password

Überprüfen der Migration

Das Update auf enaio® Version 10.0 kann erst nach Abschluss der Migration durchgeführt werden. Der Stand der Migration kann über die Protokolle im Verzeichnis \log des Migrationstools und über folgende URLs eingesehen werden:

  • Indexierungsfortschritt:

    http://<es7host>:<httpport>/_cat/indices?v

  • Status der durch die Migration durchgeführten Aktionen:

    http://<es7host>:<httpport>/systeminfo/_search

Im Protokoll wird nach Abschluss der Migration jeweils die folgende Meldung angezeigt: updateDeltaIndexingTimerRoute : Delta indexing finished

Falls sich das Migrationstool nicht automatisch beenden sollte, kann es manuell beendet werden. Es besteht keine Gefahr eines Datenverlusts.

Migration von 8.50 nach 10.0

Updates der Version 8.50 benötigen eine Migration und den Zwischenschritt der Aktualisierung auf die Version 9.10 mit Elasticsearch 7.2.1. Die Anleitung zur Migration von 8.50 auf 9.10 findet sich hier. Danach kann einfach die 10.0 Elasticsearch Setup.exe ausgeführt werden.

Update 9.10 nach 10.0

Updates auf die Version 10.0 sind, ausgehend von der Version 9.10, ohne Anpassung möglich.

Da die Java Version von Elasticsearch mit der 7.9.3 zu Java 11 wechselt, werden die Einstellungen des Elasticsearch-Dienstes nach dem Update zurückgesetzt und müssen entsprechend nach dem Update neu gesetzt werden.