Elasticsearch im Einsatz bei unseren Kunden

von Christian Thoma

Exensio setzt seit ca. einem Jahr Elasticsearch als Suchlösung für seine Kunden ein. Einer der Kunden wünschte sich eine Volltextsuche über seine Produktdatenbank.  Bei dieser Produktdatenbank handelt es sich um ca. 15 Datenbanktabellen mit einem Datenvolumen  von ca. 10 GB. Eine Tabelle beinhaltet Dateien. Diese sind hauptsächlich Office-Dateien, Pdfs oder Bilder. Über Fremdschlüssel sind sie mit anderen Tabellen verknüpft.  Da sich die Produktdatenbank und der Suchserver in verschiedenen Zonen befinden und nicht direkt miteinander kommunizieren können, wurde eine tägliche Indizierung und Bereitstellung der Inhalte umgesetzt. Dies ermöglichte eine Umsetzung mit Elasticsearch unter der Verwendung von  „Nested Objects“ [1]. „Nested Objects“  wurden auch schon als das Beste nach geschnittenem Brot aufgefasst [2]. Obwohl dies eine wahrlich gewagte These ist, kann ich diese nicht widerlegen. „Nested Objects“ können, wie geschnittenes Brot ein Genuss in jeglicher Hinsicht sein. 

Bei einem weiteren Kunden musste gewährleistet  werden, dass der Index immer aktuell ist. Immer aktuell bedeutet in diesem Kontext, dass es höchstens eine Verzögerung von ca. zehn Sekunden geben soll, nachdem ein Objekt bearbeitet wurde. Insgesamt mussten ca. 2500 Studien mit ca. 9500 Dateien indiziert werden. Teilweise mehr als 200 Dateien (Pdfs und Office-Dateien) sind einer Studie zugeordnet. Eine einzelne Datei an einer Studie kann über 200 MB groß sein. Wir entschieden, dass ein „Nested Object“ in diesem Fall nicht unseren Anforderungen entspricht. Ein einzelnes „Root Object“ mit allen Metadaten und den extrahierten Texten der Dateien ist hier unter Beachtung der zeitlichen Anforderungen nicht einfach umsetzbar, da prinzipiell das komplette „Nested Object“ mit all seinen 200 Dateien neu indiziert werden müsste, sobald sich ein einzelnes Attribut an einer Studie ändert.  Ein erneutes Indizieren der Studie mit allen dazugehörenden Dateien würde hierfür zu lange brauchen. Unter Verwendung der „Update API“ von Elasticsearch könnte man dies besser lösen. Dies erfordert jedoch einen erheblichen Mehraufwand, kann erhebliche Ressourcen(Speicher, CPU) verbrauchen und ist nicht feingranular, da ein UPDATE intern aus einem Auslesen, Update und Schreiben des Objekts (Studie + Dateien)  besteht.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert

Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close