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

Post on 16-Jul-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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