suchgetriebene anwendungen mit elasticsearch und solr · autocomplete did you mean synonyme . für...

52
Suchgetriebene Anwendungen mit Elasticsearch und Solr Florian Hopf, freiberuflicher Softwareentwickler Tobias Kraft, exensio GmbH

Upload: others

Post on 16-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Suchgetriebene Anwendungen mit Elasticsearch und Solr

Florian Hopf, freiberuflicher Softwareentwickler

Tobias Kraft, exensio GmbH

Page 2: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Agenda

Anwendungsfälle

Datenstruktur und Verteilung

Fallstricke

Motivation

Page 3: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Was ist Suche?

Page 4: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Funktionen einer Enterprise-Suche

Blätterung Sortierung

Facettierung

Unstrukturierte Suche

Strukturierte Suche

Highlighting

Autocomplete

Did you mean Synonyme

Page 5: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Für Suchmaschinen gibt es viele Einsatzszenarien

Volltextsuche Speicher

Cache

Geo-Suche

Log-Analyse

Analytics

Page 6: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 7: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 8: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Daten-Silos

Konsolidierung Daten-Menge

Daten-Menge steigt immer weiter

Skalierbarkeit

Häufige Änderungen

Flexibles Schema und Abfragen

Probleme klassischer Applikationen

Page 9: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Suchserver vs. Datenbank

Eigenschaft Suchserver Datenbank

Semantisches Modell Dokumenten-Modell Relationales Modell

Speicherstruktur Index Tabelle

Ablage der Daten Denormalisiert Normalisiert

Page 10: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Search Driven Applications

Suche ist Kernbestandteil

Suchserver als zentraler Lesespeicher

Page 11: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Agenda

Anwendungsfälle

Datenstruktur und Verteilung

Fallstricke

Motivation

Page 12: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Vom Inhalt zum Index

Document Analyzing Aufbau Struktur

Page 13: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Input-Dokumente

Page 14: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Verarbeitung der Inputdokumente

Preprocessing vor der Ablage

Entfernen, modifizieren, hinzufügen von Termen

Text-Analyzing

Page 15: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Beispiel Text-Analyzing

Suchgetriebene

Suchgetriebene Applikationen

Applikationen

suchgetriebene applikationen

suchgetrieb applikation

Source

Standard Tokenizer

Lowercase Filter

German-Light-Stem-Filter

Page 16: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Invertierter Index

Inputfeld kann auf unterschiedliche Weise abgelegt werden

Suchterm zu Dokument zuordnen

Der Indexaufbau

Page 17: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Die Indexstruktur

suchgetrieb

applikation

Doc 1

Doc 2 enterpris

Doc 1 Doc 2

Kraft

Doc 1 Hopf

Doc 1 Doc 2

Page 18: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Das Mapping

Page 19: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Dokumentenmodell

Datenablage anhand geplanter Abfragen

Duplizierte Datenablage

Modellierung des Index

http://www.morguefile.com/archive/display/12788

Page 20: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Inkrementell Indexieren

Änderungen auch im Cluster schnell verfügbar

Near Realtime

http://www.morguefile.com/archive/display/196583

Page 21: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Höhere Leselast

Leichter Skalierbar

Größere Datenmengen

Verteilung der Daten

http://mrg.bz/EFmkFQ

Page 22: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Master / Slave Infrastruktur mit Solr

Master

Load-Balancer

Slave Slave

Lesen Lesen

Schreiben Lesen

Slave

Replikation

Page 23: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 24: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Datenverteilung in Elasticsearch mit Knoten und Shards

Node 1

otcdrug

document

1

1 2

3 4

Replica: 0

Replica: 0

Page 25: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 26: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 27: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Kein dedizierter Master

Split-Brain Problem

Consensus-Algorithmus

Cluster-Verbund

Page 28: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 29: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Agenda

Anwendungsfälle

Datenstruktur und Verteilung

Fallstricke

Motivation

Page 30: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Suche ist zentraler Bestandteil der Applikation

Indexierungen

Abfragen

Pflege

Verwaltung

Anwendung

Suchserver

DB

Weitere Systeme

Dateisystem

CMS

Page 31: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 32: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Listen für CRUD-Dialoge

Geschäft Vertrieb

Page 33: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Listen für CRUD-Dialoge

Geschäft Vertrieb Aussendienst

Page 34: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Facetten für den Drilldown von Events

Page 35: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

7 SQL-Abfragen für den Aufbau der Facetten …

Page 36: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Facette mit Elasticsearch

Page 37: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Verschachtelungen / Hierarchien

Personalisierung und Berechtigungen

Page 38: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Anwendungsfälle für E-Commerce

Page 39: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Der Suchserver rückt in den Mittelpunkt

Abfragen

Anwendung

DB

Suchserver

Page 40: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Suchserver

Der Suchserver rückt in den Mittelpunkt

Abfragen

Anwendung

DB

Page 41: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 42: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Produktlisting

/select?q=*:*&fq=category:/Bücher/Fachbücher/Informatik &sort=inStock desc, price asc

Page 43: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Realtime Analysis am Beispiel von Twitter

Page 44: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Umsätze Pharmabranche für SellIn auf BU-und Linien-Ebene

Page 45: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Agenda

Anwendungsfälle

Datenstruktur und Verteilung

Fallstricke

Motivation

Page 46: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Synchronisierung Systeme

Fehlersuche

Mehrere `Verursacher`

Nachstellen Produktionsprobleme

Entwicklungssetup

Komplexität der Architektur steigt

http://www.morguefile.com/archive/display/591261

Page 47: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Transaktionen

Page 48: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Analyzing ist verlustbehaftet

Update einzelner Felder schwierig

Originalinhalt für Anpassungen weiter zugreifbar

Daten

http://www.morguefile.com/archive/display/183870

Page 49: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

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

Page 50: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Betrieb

Security

Separate Installation

Verfügbarkeit

Verteilte Logfiles

Monitoring

Page 51: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Was bringt die Umsetzung von

Applikations-Logik auf Basis

einer Suchmaschine?

Abfragen sind teilweise einfacher

Flexibler für Erweiterungen

Performance-Vorteile

Neue Anwendungsszenarien

Fazit

Page 52: Suchgetriebene Anwendungen mit Elasticsearch und Solr · Autocomplete Did you mean Synonyme . Für Suchmaschinen gibt es viele Einsatzszenarien Volltextsuche Speicher Cache Geo-Suche

Vielen Dank!

Florian Hopf, @fhopf

Tobias Kraft, @tokraft