Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Suchgetriebene Anwendungen mit Elasticsearch und Solr

exensio
September 30, 2015

Suchgetriebene Anwendungen mit Elasticsearch und Solr

Talk at the data2day conference 2015 in Karlsruhe by Florian Hopf (@fhopf) and Tobias Kraft (@tokraft).

exensio

September 30, 2015
Tweet

More Decks by exensio

Other Decks in Technology

Transcript

  1.  Suche ist mehr als Volltextsuche  Suche funktioniert im

    Kleinen wie im Großen  Suche kann auch bei klassischen Anwendungsfällen unterstützen Was wollen wir in diesem Vortrag zeigen http://www.morguefile.com/archive/display/861760
  2. Strukturiert Strukturierte vs. unstrukturierte Daten • Datenbanken • LDAP •

    Spreadsheets • (teilweise) Applikations- / API-Daten • Web Seiten • Email • Text- und Office- Dokumente • PDF-Dokumente • Log-Files Unstrukturiert Quelle: Search-Based Applications: At the Confluence of Search and Database Technologies
  3.  Daten-Silos  Konsolidierung Daten-Menge  Daten-Menge steigt immer weiter

     Skalierbarkeit  Häufige Änderungen  Flexibles Schema und Abfragen Probleme klassischer Applikationen
  4. Suchserver vs. Datenbank Eigenschaft Suchserver Datenbank Semantisches Modell Dokumenten-Modell Relationales

    Modell Speicherstruktur Index Tabelle Ablage der Daten Denormalisiert Normalisiert
  5.  Verarbeitung der Inputdokumente  Preprocessing vor der Ablage 

    Entfernen, modifizieren, hinzufügen von Termen Text-Analyzing
  6.  Invertierter Index  Inputfeld kann auf unterschiedliche Weise abgelegt

    werden  Suchterm zu Dokument zuordnen Der Indexaufbau
  7.  Dokumentenmodell  Datenablage anhand geplanter Abfragen  Duplizierte Datenablage

    Modellierung des Index http://www.morguefile.com/archive/display/12788
  8.  Inkrementell Indexieren  Änderungen auch im Cluster schnell verfügbar

    Near Realtime http://www.morguefile.com/archive/display/196583
  9. Master / Slave Infrastruktur mit Solr Master Load-Balancer Slave Slave

    Lesen Lesen Schreiben Lesen Slave Replikation
  10.  Master – Slave  Vorteile  Einfach aufzusetzen 

    Neue Knoten können einfach hinzugefügt werden  Nachteile  Daten stehen erst verzögert auf Slaves zur Verfügung  Keine Lösung für Index-Splitting  Ausfallsicherheit für schreibende Zugriffe Replizierung
  11. Node 2 otcdrug document Node 1 otcdrug document 1 1

    2 Replica: 1 Replica: 0 1' 3 4 Neuer Knoten im Cluster Datenverteilung in Elasticsearch mit Knoten und Shards
  12. Node 3 otcdrug document Node 2 otcdrug document Node 1

    otcdrug document Datenverteilung in Elasticsearch mit Knoten und Shards 1 1 2 Replica: 1 Replica: 1 1' 3 4' 3' 4 1' 2' Neuer Knoten im Cluster
  13. Datenverteilung mit SolrCloud Apache Solr 1 mit Index Solr 2

    mit Index Zookeeper 1 Zookeeper 2 Zookeeper 3 SolrJ Client Server 3 Server 1 Server 2 Client Loadbalancer
  14. Vereinheitlichung von verschiedenen Quellen News  title  message 

    created Document  filename  created Payload  binary Report  title  abstract  published Suchengine • Vereinheitlichung über Index • Entsprechendes Mapping Index-Prozess Relationale DB • Vereinheitlichung in einer Ansicht/Liste ist schwierig
  15.  Synchronisierung Systeme  Fehlersuche  Mehrere `Verursacher`  Nachstellen

    Produktionsprobleme  Entwicklungssetup Komplexität der Architektur steigt http://www.morguefile.com/archive/display/591261
  16.  Analyzing ist verlustbehaftet  Update einzelner Felder schwierig 

    Originalinhalt für Anpassungen weiter zugreifbar Daten http://www.morguefile.com/archive/display/183870
  17.  Testunterstützung ist vorhanden  SolrtestCaseJ4  Elasticsearch Test Framework

     Relevanz ist subjektiv  Analyzing-Prozess kann komplexer werden  Rollback in Tests Testbarkeit http://www.morguefile.com/archive/display/87396
  18. Was bringt die Umsetzung von Applikations-Logik auf Basis einer Suchmaschine?

     Abfragen sind teilweise einfacher  Flexibler für Erweiterungen  Performance-Vorteile  Neue Anwendungsszenarien Fazit