Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Einführung in Elasticsearch

390 views

Published on

Vortrag über Elasticsearch bei den IT-Tagen 2016 in Frankfurt

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Einführung in Elasticsearch

  1. 1. www.it-tage.org IT-Tage 2016 | 12.-15.Dezember 2016 | Frankfurt am Main | Maritim Hotel
  2. 2. elasticsearch. Florian Hopf www.florian-hopf.de @fhopf
  3. 3. Agenda ● Suche ● Verteilung ● Aggregationen ● Zentralisiertes Logging
  4. 4. Suche
  5. 5. Installation # download archive wget https://artifacts.elastic.co/downloads/ elasticsearch/elasticsearch-5.0.0.zip unzip elasticsearch-5.0.0.zip # on windows: elasticsearch.bat elasticsearch-5.0.0/bin/elasticsearch
  6. 6. Zugriff per HTTP curl -XGET "http://localhost:9200" { "name" : "LI8ZN-t", "cluster_name" : "elasticsearch", "cluster_uuid" : "UvbMAoJ8TieUqugCGw7Xrw", "version" : { "number" : "5.0.0", "build_hash" : "253032b", "build_date" : "2016-10-26T04:37:51.531Z", "build_snapshot" : false, "lucene_version" : "6.2.0" }, "tagline" : "You Know, for Search" }
  7. 7. Indizierung POST /library/book { "title": "Elasticsearch in Action", "author": [ "Radu Gheorghe", "Matthew Lee Hinman", "Roy Russo" ], "published": "2015-06-30T00:00:00.000Z", "publisher": { "name": "Manning", "country": "USA" } }
  8. 8. Suche GET /library/book/_search?q=elasticsearch { [...] "hits": { "hits": [ { "_index": "library", "_type": "book", "_source": { "title": "Elasticsearch in Action", [...]
  9. 9. Suche per Query DSL POST /library/book/_search { "query": { "bool": { "must": { "match": { "title": "elasticsearch" } }, "filter": { "term": { "publisher.name": "manning" } } } } }
  10. 10. Sprachspezifische Inhalte POST /library/book/ { "title": "Elasticsearch - Ein praktischer Einstieg", "author": "Florian Hopf", "published": "2015-10-26T00:00:00.000Z", "publisher": { "name": "dpunkt.verlag", "country": "DE" }, "tags": ["Lucene", "Elasticsearch"] }
  11. 11. Sprachspezifische Inhalte POST /library/book/_search { "query": { "match": { "title": "praktisch" } } }
  12. 12. Analyzing Term Document Id Action 1 ein 2 Einstieg 2 Elasticsearch 1,2 in 1 praktischer 2 1. Tokenization Elasticsearch in Action Elasticsearch: Ein praktischer Einstieg
  13. 13. Analyzing Term Document Id action 1 ein 2 einstieg 2 elasticsearch 1,2 in 1 praktischer 2 1. Tokenization Elasticsearch in Action Elasticsearch: Ein praktischer Einstieg 2. Lowercasing
  14. 14. Suche Term Document Id action 1 ein 2 einstieg 2 elasticsearch 1,2 in 1 praktischer 2 1. Tokenization 2. LowercasingElasticsearch elasticsearch
  15. 15. Suche Term Document Id action 1 ein 2 einstieg 2 elasticsearch 1,2 in 1 praktischer 2 1. Tokenization 2. Lowercasingpraktisch praktisch
  16. 16. Analyzing Term Document Id action 1 ein 2 einstieg 2 elasticsearch 1,2 in 1 praktisch 2 1. Tokenization Elasticsearch in Action Elasticsearch: Ein praktischer Einstieg 2. Lowercasing 3. Stemming
  17. 17. Suche Term Document Id action 1 ein 2 einstieg 2 elasticsearch 1,2 in 1 praktisch 2 1. Tokenization 2. Lowercasingpraktisch praktisch 3. Stemming
  18. 18. Mapping PUT /library/book/_mapping { "book": { "properties": { "title": { "type": "text", "analyzer": "german" } } } }
  19. 19. Suchfeatures ● Fertige Analyzer, Konfiguration von eigenen ● Relevanzberechnung ● Paginierung, Sortierung ● Highlighting, Autovervollständigung, ... ● Facettierung über Aggregationen
  20. 20. Recap ● Java-basierter Suchserver ● Kommunikation über HTTP und JSON ● Dokumentenbasierte Speicherung ● Unterstützung unterschiedlicher Datentypen ● Suche über Query DSL auf invertiertem Index
  21. 21. Verteilung
  22. 22. Verteilung
  23. 23. Verteilung
  24. 24. Verteilung
  25. 25. Verteilung
  26. 26. Verteilung
  27. 27. Recap ● Knoten können Cluster bilden ● Datenverteilung durch Sharding ● Replicas zur Lastverteilung und Ausfallsicherheit ● Verteilte Suche
  28. 28. Aggregationen
  29. 29. Aggregations ● Informationen über die Daten ● Ersetzen und ermöglichen Facetten ● Anwendungsfälle für Suchanwendungen und Analytics
  30. 30. Aggregations
  31. 31. Terms-Aggregation POST /library/book/_search { "size": 0, "aggs": { "common-tags": { "terms": { "field": "tags.keyword" } } } }
  32. 32. Terms-Aggregation "aggregations": { "common-tags": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 0, "buckets": [ { "key": "Elasticsearch", "doc_count": 2 }, { "key": "Lucene", "doc_count": 2 }, { "key": "Java", "doc_count": 1 }] [...]
  33. 33. Terms-Aggregation ● Bucket mit Wert und Anzahl ● Facettierung ● Informationen aus Daten
  34. 34. Aggregationen kombinieren POST /devoxx/tweet/_search { "aggs" : { "hashtags" : { "terms" : { "field" : "hashtag.text" } } } }
  35. 35. Aggregationen kombinieren "aggregations": { "hashtags": { "buckets": [ { "key": "dartlang", "doc_count": 229 }, { "key": "java", "doc_count": 216 }, [...]
  36. 36. Aggregationen kombinieren POST /devoxx/tweet/_search { "aggs" : { "hashtags" : { "terms" : { "field" : "hashtag.text" }, "aggs" : { "hashtagusers" : { "terms" : { "field" : "user.screen_name" } } } } } }
  37. 37. Aggregationen kombinieren "key": "scala", "doc_count": 130, "hashtagusers": { "buckets": [ { "key": "jaceklaskowski", "doc_count": 74 }, { "key": "ManningBooks", "doc_count": 3 }, [...]
  38. 38. Bucket-Aggregationen ● Range-Aggregationen ● Histogramme ● Filter ● Geo-Aggregationen ● …
  39. 39. Metric-Aggregationen ● Berechnen einen oder mehrere Werte ● Meist auf numerischen Feldern ● Stats, Percentiles, Min, Max, Sum, Avg, ...
  40. 40. Stats-Aggregationen GET /library/book/_search { "aggs": { "published_stats": { "stats": { "field": "published" } } } }
  41. 41. Stats-Aggregationen "aggregations": { "published_stats": { "count": 5, "min": 1419292800000, "max": 1445990400000, "avg": 1440547200000, "sum": 7202736000000, "min_as_string": "2014-12-23T00:00:00.000Z", "max_as_string": "2015-10-28T00:00:00.000Z", "avg_as_string": "2015-08-26T00:00:00.000Z", "sum_as_string": "2198-03-31T00:00:00.000Z" } }
  42. 42. Recap ● Aggregationen bieten unterschiedliche Einblicke in die Daten ● Facettierung ● Kombination mehrerer Aggregationen ● Grundlage für Visualisierungen
  43. 43. Zentralisiertes Logging
  44. 44. Zentralisiertes Logging ● Zentralisierung Logs aus Anwendungen ● Zentralisierung Logs über Maschinen ● Auch ohne Zugriff ● Leichte Durchsuchbarkeit ● Real-Time-Analysis / Visualisierung ● Zugang zu Daten
  45. 45. Zentralisiertes Logging ● Einlesen ● Beats/Logstash/Ingest Node ● Speicherung ● Elasticsearch ● Auswertung ● Kibana
  46. 46. Logfile-Analyse
  47. 47. Logstash-Config input { file { path => "/var/log/apache2/access.log" } } filter { grok { match => { message => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch_http { host => "localhost" } }
  48. 48. Kibana
  49. 49. Kibana
  50. 50. Recap ● Einlesen, Anreichern, Speichern von Logevents ● Zahlreiche Inputs in Logstash ● Konsolidierung ● Zentralisierung ● Auswertung
  51. 51. Zugriff auf Elasticsearch ● Viele Clients verfügbar ● Zugriff per HTTP ● Sniffing ● Java ● Transport Client, RestClient
  52. 52. Noch viel mehr! ● Unterschiedliche Suchfeatures ● Viele Aggregationen ● Geodaten ● Percolator
  53. 53. Weitere Infos
  54. 54. Weitere Infos ● http://elastic.co ● Elasticsearch – The definitive Guide ● https://www.elastic.co/guide/en/elasticsearch/gui de/master/index.html ● Elasticsearch in Action ● https://www.manning.com/books/elasticsearch-in- action ● http://blog.florian-hopf.de

×