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

Analytics mit Elasticsearch

Analytics mit Elasticsearch

Ad-hoc Analysen auf strukturierten Daten

Avatar for Hendrik Saly

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