suchgetriebene anwendungen mit elasticsearch und solr · autocomplete did you mean synonyme . für...
Post on 16-Jul-2020
2 Views
Preview:
TRANSCRIPT
Suchgetriebene Anwendungen mit Elasticsearch und Solr
Florian Hopf, freiberuflicher Softwareentwickler
Tobias Kraft, exensio GmbH
Agenda
Anwendungsfälle
Datenstruktur und Verteilung
Fallstricke
Motivation
Was ist Suche?
Funktionen einer Enterprise-Suche
Blätterung Sortierung
Facettierung
Unstrukturierte Suche
Strukturierte Suche
Highlighting
Autocomplete
Did you mean Synonyme
Für Suchmaschinen gibt es viele Einsatzszenarien
Volltextsuche Speicher
Cache
Geo-Suche
Log-Analyse
Analytics
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
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
Daten-Silos
Konsolidierung Daten-Menge
Daten-Menge steigt immer weiter
Skalierbarkeit
Häufige Änderungen
Flexibles Schema und Abfragen
Probleme klassischer Applikationen
Suchserver vs. Datenbank
Eigenschaft Suchserver Datenbank
Semantisches Modell Dokumenten-Modell Relationales Modell
Speicherstruktur Index Tabelle
Ablage der Daten Denormalisiert Normalisiert
Search Driven Applications
Suche ist Kernbestandteil
Suchserver als zentraler Lesespeicher
Agenda
Anwendungsfälle
Datenstruktur und Verteilung
Fallstricke
Motivation
Vom Inhalt zum Index
Document Analyzing Aufbau Struktur
Input-Dokumente
Verarbeitung der Inputdokumente
Preprocessing vor der Ablage
Entfernen, modifizieren, hinzufügen von Termen
Text-Analyzing
Beispiel Text-Analyzing
Suchgetriebene
Suchgetriebene Applikationen
Applikationen
suchgetriebene applikationen
suchgetrieb applikation
Source
Standard Tokenizer
Lowercase Filter
German-Light-Stem-Filter
Invertierter Index
Inputfeld kann auf unterschiedliche Weise abgelegt werden
Suchterm zu Dokument zuordnen
Der Indexaufbau
Die Indexstruktur
suchgetrieb
applikation
Doc 1
Doc 2 enterpris
Doc 1 Doc 2
Kraft
Doc 1 Hopf
Doc 1 Doc 2
Das Mapping
Dokumentenmodell
Datenablage anhand geplanter Abfragen
Duplizierte Datenablage
Modellierung des Index
http://www.morguefile.com/archive/display/12788
Inkrementell Indexieren
Änderungen auch im Cluster schnell verfügbar
Near Realtime
http://www.morguefile.com/archive/display/196583
Höhere Leselast
Leichter Skalierbar
Größere Datenmengen
Verteilung der Daten
http://mrg.bz/EFmkFQ
Master / Slave Infrastruktur mit Solr
Master
Load-Balancer
Slave Slave
Lesen Lesen
Schreiben Lesen
Slave
Replikation
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
Datenverteilung in Elasticsearch mit Knoten und Shards
Node 1
otcdrug
document
1
1 2
3 4
Replica: 0
Replica: 0
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
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
Kein dedizierter Master
Split-Brain Problem
Consensus-Algorithmus
Cluster-Verbund
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
Agenda
Anwendungsfälle
Datenstruktur und Verteilung
Fallstricke
Motivation
Suche ist zentraler Bestandteil der Applikation
Indexierungen
Abfragen
Pflege
Verwaltung
Anwendung
Suchserver
DB
Weitere Systeme
Dateisystem
CMS
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
Listen für CRUD-Dialoge
Geschäft Vertrieb
Listen für CRUD-Dialoge
Geschäft Vertrieb Aussendienst
Facetten für den Drilldown von Events
7 SQL-Abfragen für den Aufbau der Facetten …
Facette mit Elasticsearch
Verschachtelungen / Hierarchien
Personalisierung und Berechtigungen
Anwendungsfälle für E-Commerce
Der Suchserver rückt in den Mittelpunkt
Abfragen
Anwendung
DB
Suchserver
Suchserver
Der Suchserver rückt in den Mittelpunkt
Abfragen
Anwendung
DB
Kategorien-Navigation
Bücher
/Bücher
Bücher/Fachbücher
/Bücher/Fachbücher
/Bücher
/select?q=*:*&facet=on&facet.field=category&rows=0
Produktlisting
/select?q=*:*&fq=category:/Bücher/Fachbücher/Informatik &sort=inStock desc, price asc
Realtime Analysis am Beispiel von Twitter
Umsätze Pharmabranche für SellIn auf BU-und Linien-Ebene
Agenda
Anwendungsfälle
Datenstruktur und Verteilung
Fallstricke
Motivation
Synchronisierung Systeme
Fehlersuche
Mehrere `Verursacher`
Nachstellen Produktionsprobleme
Entwicklungssetup
Komplexität der Architektur steigt
http://www.morguefile.com/archive/display/591261
Transaktionen
Analyzing ist verlustbehaftet
Update einzelner Felder schwierig
Originalinhalt für Anpassungen weiter zugreifbar
Daten
http://www.morguefile.com/archive/display/183870
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
Betrieb
Security
Separate Installation
Verfügbarkeit
Verteilte Logfiles
Monitoring
Was bringt die Umsetzung von
Applikations-Logik auf Basis
einer Suchmaschine?
Abfragen sind teilweise einfacher
Flexibler für Erweiterungen
Performance-Vorteile
Neue Anwendungsszenarien
Fazit
Vielen Dank!
Florian Hopf, @fhopf
Tobias Kraft, @tokraft
top related