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

Analytics mit Elasticsearch

Analytics mit Elasticsearch

Ad-hoc Analysen auf strukturierten Daten

Hendrik Saly

May 18, 2016
Tweet

More Decks by Hendrik Saly

Other Decks in Programming

Transcript

  1. •„für diesen Augenblick gemacht“ •Reporting für nicht-technische Endbenutzer •Reports müssen

    nicht vordefiniert oder programmiert werden •Beantwortet geschäftsspezifische Fragestellungen •Idealerweise webbasiert •near-realtime Ad-hoc_ 3
  2. •Typisierte Daten • Skalare Typen • Aufzählungen • Zusammengesetzte Typen

    •Bedeutung einzelnen Datenelemente Strukturierte Daten_ 4
  3. •Datenformat in elasticsearch is JSON •JSON eigene Datentypen • Zeichenkette

    • Nummer • Boolscher Wert • Undefinierter Wert (null) • Aufzählung • Objekt Strukturierte Daten_ 5
  4. { "firstname":"Max", "name":"Mustermann", "current_ip_addr":"192.168.1.1", "birthdate":"1977-02-17", "last_login":"2016-03-12T12:02:22.321+02:00", "last_login_from":{ "lat":41.12, "lon":-71.34 },

    "login_count":1332, "is_premium":true, "roles":[ "users", "premium" ], "addresses":[ { "type":"BILLING", "street":"Musterstr. 11", "plz":"76227" }, { "type":"SHIPPING", "street":"Lorenzweg 34a", "plz":"90998" } ] } Strukturierte Daten_ 7 "firstname":"Max", "name":"Mustermann", "current_ip_addr":"192.168.1.1", "birthdate":"1977-02-17", "last_login":"2016-03-12T12:02:22.321+02:00", "last_login_from":{ "lat":41.12, "lon":-71.34 } String String IPv4 Date Object/Geopoint
  5. { "firstname":"Max", "name":"Mustermann", "current_ip_addr":"192.168.1.1", "birthdate":"1977-02-17", "last_login":"2016-03-12T12:02:22.321+02:00", "last_login_from":{ "lat":41.12, "lon":-71.34 },

    "login_count":1332, "is_premium":true, "roles":[ "users", "premium" ], "addresses":[ { "type":"BILLING", "street":"Musterstr. 11", "plz":"76227" }, { "type":"SHIPPING", "street":"Lorenzweg 34a", "plz":"90998" } ] } Strukturierte Daten_ 8 "login_count":1332, "is_premium":true, "roles":[ "users", "premium" ] Number Boolean Array
  6. { "firstname":"Max", "name":"Mustermann", "current_ip_addr":"192.168.1.1", "birthdate":"1977-02-17", "last_login":"2016-03-12T12:02:22.321+02:00", "last_login_from":{ "lat":41.12, "lon":-71.34 },

    "login_count":1332, "is_premium":true, "roles":[ "users", "premium" ], "addresses":[ { "type":"BILLING", "street":"Musterstr. 11", "plz":"76227" }, { "type":"SHIPPING", "street":"Lorenzweg 34a", "plz": null } ] } Strukturierte Daten_ 9 "addresses":[ { "type":"BILLING", "street":"Musterstr. 11", "plz":"76227" }, { "type":"SHIPPING", "street":"Lorenzweg 34a", "plz": null } ] Array String/Enum null
  7. •Aggregationen • Metrik Aggregationen • Bucket Aggregationen • Pipeline Aggregationen

    • Metrik oder Bucket Aggregationen verketten • Eingabe einer Aggregation ist Ausgabe einer anderen •Near-realtime •Keine „rollups“ nötig •Einbeziehung unstrukturierter Daten möglich Analysemöglichkeiten in elasticsearch_ 10
  8. •Metrik Aggregation • Berechnen eine Metrik auf Basis einer Menge

    an Dokumenten • Relevante Dokumente per Suche (Query) finden • Mögliche Aggregationen (Auswahl) • Summe (sum) • Durchschnitt (avg) • Minimum/Maximum (min/max) • Kardinalität (cardinality) • Percentile (percentiles) • „Per Skript“ (scripted_metric) Analysemöglichkeiten_ 11
  9. •Bucket Aggregation • Erzeugt „Töpfe“ (buckets) von Dokumenten • Ausprägung

    des buckets hängt vom Typ der Aggregation ab • Mögliche Aggregationen (Auswahl) • Ausdruck (terms) • Bereich (range) • Histogramm (histogram) • Geo Distanz (geo_distance) Analysemöglichkeiten_ 12