SlideShare ist ein Scribd-Unternehmen logo
ELASTICSEARCH & DOCKER
MIT LOGSTASH JDBC UND RUBY
AGENDA
• ÜBERBLICK
• VORBEREITUNG DER CONTAINER
• A. START VON MYSQL & PHPMYADMIN
• B. VORBEREITUNG DER MYSQL DATENBANK
• C. START VON ELASTICSEARCH & KIBANA
• IMPLEMENTIERUNG DER KONFIGURATIONSDATEI
• A. INPUT (JDBC)
• C. FILTER (JDBC_STREAMING, RUBY)
• B. OUTPUT (ELASTICSEARCH)
• DURCHFÜHRUNG DES IMPORT
• START LOGSTASH
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 2
ÜBERBLICK
• WER BIST DU?
• WAS IST DAS ZIEL?
• WAS BENÖTIGE ICH?
• WIE MACHE ICH DAS?
ICH BIN DIETER, EIN ANWENDUNGSENTWICKLER
DATEN AUS MYSQL MIT LOGSTASH IN ELASTICSEARCH IMPORTIEREN
WIR BRAUCHEN DAFÜR NUR DOCKER + MYSQL-TREIBER
WIR STARTEN DOCKER CONTAINER UND ERSTELLEN EIN
KONFIGURATIONSDATEI
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 3
ÜBERBLICK
WAS IST DER PLAN?
• WIR LESEN DATEN AUS EINER MYSQL
DATENBANK AUS
• MANIPULIEREN DIE DATEN
• INFORMATION AUS UNTERSCHIEDLICHEN TABELLEN
ZU EINEM OBJEKT
• IMPORT DER DATEN NACH ELASTICSEARCH
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 4
ÜBERBLICK
WOZU LOGSTASH?
• LOGSTASH IST EINE SERVERSEITIGE OPEN-
SOURCE-SOFTWARE
• SIMULTANE VERARBEITUNG
• DATEN AUS UNTERSCHIEDLICHEN QUELLEN
• MANIPULIERUNG UND WEITERLEITUNG DER DATEN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 5
Quelle: https://www.elastic.co/
VORBEREITUNG
WIR BENÖTIGEN FÜR DIESEN TASK NUR DOCKER
CONTAINER
• MYSQL & PHPMYADMIN
• ELASTICSEARCH
• KIBANA
• LOGSTASH
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 6
VORBEREITUNG
STARTE DIE MOTOREN!
• STARTE DIE CONTAINER FÜR MYSQL
• & PHPMYADMIN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 7
DOCKER RUN --NAME MYSQL-SERVER
-P 3306:3306
-E MYSQL_ROOT_PASSWORD=CODINGSOLO
-D MYSQL:LATEST
DOCKER RUN –NAME MYADMIN
-D --LINK MYSQL-SERVER:DB
-P 8080:80 PHPMYADMIN/PHPMYADMIN
VORBEREITUNG
JETZT SUCHEN WIR UNSEREN MYSQL-TREIBER AUF
MAVEN
• GEH AUF FOLGENDE URL
HTTPS://MVNREPOSITORY.COM/
26.04.2020Autor: Dieter Schanz 8
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
VORBEREITUNG
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 9
• SUCHE NACH MYSQL-CONNECTOR
• WÄHLE DIE DIE PASSENDE VERSION AUS, DIE ZU
DEINEM MYSQL CONTAINER PASST
• DANN LÄDST DU DIR DIE JAR HERUNTER
VORBEREITUNG
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 10
LETZTER SCHRITT
• LADE DIR MEINE BEISPIEL DATEN FÜR DIE MYSQL
DATENBANK HERUNTER
• DAMIT WIRD EINE NEUE DATENBANK ANGELEGT,
DIE DATENBANK-STRUKTUR UND TESTDATEN
• AUßERDEM WIRD EIN NEUER BENUTZER FÜR
LOGSTASH ERSTELLT
HTTPS://GITHUB.COM/SCHADIET/ELASTICSEARCH-DOCKER-
WITH-LOGSTASH-JDBC-AND-
MAGIC/BLOB/MASTER/TUTORIAL%20CODINGSOLO.SQL
VORBEREITUNG
LASS UNS DIE DATENBANK VORBEREITEN!
• GEH AUF HTTP://LOCALHOST:8080/
• LOG IN ALS ROOT
• PASSWORT WURDE BEIM START DES MYSQL-CONTAINERS
GESETZT
• IMPORT VON TUTORIAL CODINGSOLO.SQL
26.04.2020Autor: Dieter Schanz 11
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
VORBEREITUNG
WIR ERSTELLEN JETZT EINE ORDNERSTRUKTUR
• HAUPTORDNER ELASTICSEARCH_IMPORT
• UNTERORDNER
• DRIVER
• PIPELINE
• IN DRIVER KOMMT DER MYSQL-CONNECTOR
• IN PIPELINE ERSTELLEN WIR DIE KONFIGURATIONSDATEI
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 12
VORBEREITUNG
WIR ERSTELLEN JETZT EIN DOCKER NETZWERK
• FÜR ELASTICSEARCH & KIBANA
• NAME IST FREI WÄHLBAR -> SKYNET
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 13
DOCKER NETWORK CREATE SKYNET
VORBEREITUNG
STARTEN WIR NUN AUCH ELASTICSEARCH & KIBANA
DOCKER RUN -D --NAME ELASTICSEARCH
--NET SKYNET
-P 9200:9200 -P 9300:9300
-E "DISCOVERY.TYPE=SINGLE-NODE"
ELASTICSEARCH:7.6.2
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 14
DOCKER RUN -D --NAME KIBANA
--NET SKYNET
-P 5601:5601 KIBANA:7.6.2
VORBEREITUNG
WIR PRÜFEN NUN BEIDE SYSTEME:
• ELASTICSEARCH ERREICHST DU UNTER
HTTP://LOCALHOST:9200/
26.04.2020Autor: Dieter Schanz 15
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
VORBEREITUNG
• KIBANA ERREICHST DU UNTER
HTTP://LOCALHOST:5601/
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 16
IMPLEMENTIERUNG
JETZT LEGEN WIR LOS!
LASS UNS NUN DIE KONFIGURATIONSDATEI BEARBEITEN:
• EINE TYPISCHE KONFIGURATION HAT DREI BEREICHE
• INPUT
• FILTER
• OUTPUT
• BEI MULTIPLEN DATENOBJEKTEN SOLLTEST DU DEN OBJECT-TYPE ABFRAGEN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 17
input {
}
filter {
##Check you are working with the correct type
if[type] == "XY" {
}
}
output {
if[type] == "XY" {
}
stdout { codec => rubydebug }
}
IMPLEMENTIERUNG
INPUT
• JDBC
• WIR VERGEBEN EINEN OBJECT-TYPE
• BEI MULTIPLEN INPUT-OBJEKTEN NOTWENDIG
• SCHEDULE
• CRON SYNTAX
26.04.2020Autor: Dieter Schanz 18
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
input {
##JDBC Plugin to Query Data from MySQL
jdbc {
type => "kundendaten"
schedule => "* * * * *"
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT * FROM codingsolo.kunde;"
}
}
IMPLEMENTIERUNG
INPUT
• JDBC
• DRIVER
• PFAD ZUM TREIBER (AUF SEITE DES CONTAINERS)
• DRIVER CLASS
• CONNECTION STRING
• ADRESSE DER MYSQL DB & DATENBANKNAME
• USER & PASSWORD KAM MIT DEN TESTDATEN
• STATEMENT DEIN DATENBANK QUERY
26.04.2020Autor: Dieter Schanz 19
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
input {
##JDBC Plugin to Query Data from MySQL
jdbc {
type => "kundendaten"
schedule => "* * * * *"
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT * FROM codingsolo.kunde;"
}
}
IMPLEMENTIERUNG
FILTER
• JDBC_STREAMING FÜR BESTELLUNGEN
• DIE JDBC KONFIGURATIONEN AUS DEM JDBC
INPUT
• STATEMENT
• QUERY FÜR WEITERE DATEN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 20
## jdbc_streaming Plugin add MORE Data
## from different Tables / Databases
jdbc_streaming {
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT id as bestellung_id,
bestellung_datum,
bestellung_status
from codingsolo.bestellung
WHERE codingsolo.bestellung.kunde_id = :idparam;"
parameters => { "idparam" => "id" }
target => "kunde_bestellung"
}
IMPLEMENTIERUNG
FILTER
• JDBC_STREAMING FÜR BESTELLUNGEN
• PARAMETERS
• WIR VERKNÜPFEN IDPARAM AUF DIE ID DER
DATEN AUS DEM OBJECT-TYPE KUNDENDATEN
• TARGET
• WIR SPEICHERN DIE DATEN IN DAS NEUE FELD
KUNDE_BESTELLUNG
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 21
## jdbc_streaming Plugin add MORE Data
## from different Tables / Databases
jdbc_streaming {
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT id as bestellung_id,
bestellung_datum,
bestellung_status
from codingsolo.bestellung
WHERE codingsolo.bestellung.kunde_id = :idparam;"
parameters => { "idparam" => "id" }
target => "kunde_bestellung"
}
IMPLEMENTIERUNG
FILTER
• JDBC_STREAMING FÜR ANSCHRIFT
• PARAMETERS
• WIR VERKNÜPFEN IDPARAM AUF DIE ID DER
DATEN AUS DEM OBJECT-TYPE KUNDENDATEN
• TARGET
• WIR SPEICHERN DIE DATEN IN DAS NEUE FELD
KUNDE_ANSCHRIFT
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 22
##jdbc_streaming Plugin to add Data from different Tables / Databases
jdbc_streaming {
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT codingsolo.kunde_anschrift.kunde_id,
anschrift.id,
anschrift.anschrift_Strasse,
anschrift.anschrift_hausnummer,
anschrift.anschrift_postleitzahl,
anschrift.anschrift_ort,
anschrift.anschrift_erstellung,
land_name as Anschrift_land,
land_kuerzel FROM codingsolo.kunde_anschrift
LEFT JOIN codingsolo.anschrift as anschrift
ON codingsolo.kunde_anschrift.anschrift_id = anschrift.id
LEFT JOIN codingsolo.land as land
ON anschrift.anschrift_land = land.id
WHERE codingsolo.kunde_anschrift.kunde_id = :idparam;"
parameters => {"idparam" => "id" }
target => "kunde_anschrift"
}
IMPLEMENTIERUNG
FILTER
• JDBC_STREAMING FÜR BESTELLPOSTEN
• PARAMETERS
• WIR VERKNÜPFEN IDPARAM AUF DIE ID DER DATEN
AUS DEM OBJECT-TYPE KUNDENDATEN
• TARGET
• WIR SPEICHERN DIE DATEN IN DAS NEUE FELD
BESTELLUNG_POSTEN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 23
##jdbc_streaming Plugin add MORE Data from different Tables / Databases
jdbc_streaming {
jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo"
jdbc_user => "elastic"
jdbc_password => "elastic"
statement => "SELECT
codingsolo.bestellung_artikel.id as bestellung_id,
codingsolo.bestellung_artikel.anzahl,
artikel.id,
artikel.artikel_name,
artikel.artikel_preis,
artikel.artikel_status
FROM codingsolo.bestellung_artikel
LEFT JOIN codingsolo.artikel as artikel
ON codingsolo.bestellung_artikel.artikel_id = artikel.id
WHERE codingsolo.bestellung_artikel.id in :idparam;"
parameters => { "idparam" => "bestellung_temp"}
target => "bestellung_posten"
}
IMPLEMENTIERUNG
FILTER
RUBY CODE
• WIR KÖNNEN EIGENE LOGIK IMPLEMENTIEREN
• BEISPIEL: ITERATION ÜBER DIE BESTELLUNGEN
• AUSLESEN DER BESTELL-ID
• SPEICHERN DER BESTELL-ID IN EINER LISTE
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 24
## Extracting all bestellung_id from Field:kunde_bestellung
## into a List of Strings
ruby {
code => '
event.get("kunde_bestellung").each do |item|
if not event.get("bestellung_temp")
event.set("bestellung_temp", [item["bestellung_id"]])
else
event.set("bestellung_temp", event.get("bestellung_temp")
+ [item["bestellung_id"]])
end
end
'
}
IMPLEMENTIERUNG
FILTER
RUBY CODE
• WIR KÖNNEN EIGENE LOGIK IMPLEMENTIEREN
• BEISPIEL: ITERATION ÜBER DIE BESTELLPOSTEN
UND ÜBER DIE BESTELLUNGEN
• ABGLEICH BESTELLUNGEN UND BESTELLPOSTEN
• ZUWEISUNG BESTELLPOSTEN ZUR BESTELLUNG
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 25
## Adding order-line to orders MY GOAL is to include all entries
## from one bestellung_posten into the single kunde_bestellung
ruby {
code => '
event.get("bestellung_posten").each_with_index do |item, index_item|
event.get("kunde_bestellung").each_with_index do |order, index|
if order["bestellung_id"] == item["bestellung_id"]
if not event.get("[kunde_bestellung][#{index}][bestellung_posten]")
event.set("[kunde_bestellung][#{index}][bestellung_posten]", [item])
else
event.set("[kunde_bestellung][#{index}][bestellung_posten]",
order["bestellung_posten"] + [item])
end
end
end
end
'
}
IMPLEMENTIERUNG
FILTER
MUTATE
• WIR RÄUMEN DIE DATEN AUF
• REMOVE_FIELD ENTFERNT EINE FELD IM
DOKUMENT
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 26
##clean up
mutate {
remove_field => [ "bestellung_posten"]
remove_field => [ "bestellung_temp"]
}
IMPLEMENTIERUNG
OUTPUT
• ELASTICSEARCH
• ABFRAGE DES TYPES
• (UNTERSCHIEDLICHE IPUTS -> UNTERSCHIEDLICHE TYPEN)
• HOST AUF DEM ELASTICSEARCH LÄUFT
• INDEX
• AUF WELCHEM INDEX WERDEN DIE DATEN GESPEICHERT
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 27
output {
if[type] == "kundendaten" {
elasticsearch {
hosts => "localhost:9200"
index => "kundendaten"
document_type => "_doc"
document_id => "%{id}"
doc_as_upsert => true
action => "update"
}
}
stdout { codec => rubydebug }
}
IMPLEMENTIERUNG
OUTPUT
• ELASTICSEARCH
• DOCUMENT_ID
• DU KANNST EINE ID VERGEBEN
• DOC_AS_UPSERT
• DAMIT DATEN BEI AKTUALISIERUNG ÜBERSCHRIEBEN WERDEN
• WICHTIG! IMMER EIN STANDARD OUTPUT EINBAUEN
• DEBUG REASON
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 28
output {
if[type] == "kundendaten" {
elasticsearch {
hosts => "localhost:9200"
index => "kundendaten"
document_type => "_doc"
document_id => "%{id}"
doc_as_upsert => true
action => "update"
}
}
stdout { codec => rubydebug }
}
DURCHFÜHRUNG
BEVOR WIR LOGSTASH STARTEN:
• FÜR DIESES BEISPIEL GEBEN WIR DEN HOST ALS NETWORK AN:
• --NET="HOST"
• -V = ORDNER FREIGABE HOST:CONTRAINER
-V D:ELASTICSEARCH_IMPORTPIPELINE:/USR/SHARE/LOGSTASH/PIPELINE/
• WIR VERKNÜPFEN UNSEREN ORDNER PIPELINE MIT DEM AUS DEM CONTAINER
• CONTAINER-SEITIG ÜBERPRÜFT LOGSTASH OB IN PIPELINE KONFIGURATIONSDATEIEN BEREITLIEGEN
• ACHTE DABEI AUF DEN PFAD ZUM ORDNER. DEIN PFAD KANN ABWEICHEN
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 29
DURCHFÜHRUNG
STARTE WIR ENDLICH LOGSTASH!
• FREIGABE UNSERES ORDNER DRIVER
• LOGSTASH BENÖTIGT NOCH UNSEREN MYSQL-TREIBER
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 30
DOCKER RUN -IT --RM --NAME LOGSTASH
--NET="HOST"
-V D:ELASTICSEARCH_IMPORTPIPELINE:
/USR/SHARE/LOGSTASH/PIPELINE/
-V D:ELASTICSEARCH_IMPORTDRIVER
:/DRIVER/
DOCKER.ELASTIC.CO/LOGSTASH/LOGSTASH:7.6.2
DURCHFÜHRUNG
ÜBERPRÜFE DEIN ERGEBNIS:
• GEH AUF FOLGENDE ADRESSE:
HTTP://LOCALHOST:9200/KUNDENDATEN/_DOC/2
• ES SOLLTEN NUN DATEN DES KUNDEN MIT ANSCHRIFT
UND BESTELLUNGEN ANGEZEIGT WERDEN
• ALTERNATIV KÖNNEN WIR AUCH KIBANA NUTZEN
FIREFOX HAT EINE JSON-VIEWER
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 31
{
"_index": "kundendaten",
"_type": "_doc",
"_id": "2",
"_source": {
"kunde_name": "Willson",
"kunde_sperrung": false,
"@version": "1",
"kunde_vorname": "Sam",
"type": "kundendaten",
"kunde_bestellung": [
{
"bestellung_datum": "2020-04-13T17:34:21.000Z",
"bestellung_status": "In Bearbeitung",
"bestellung_posten": [
{
"anzahl": 5,
"artikel_preis": 80.99,
"bestellung_id": 8003,
"artikel_name": "Gaming Maus (Pro Gramer)",
"id": 7,
"artikel_status": "gering"
}
],
"bestellung_id": 8003
}
],
"kunde_erstellung": "2020-04-18T15:02:25.000Z",
"id": 2,
"kunde_geburtsdatum": "1992-11-01T00:00:00.000Z",
"@timestamp": "2020-04-25T17:58:00.547Z",
"kunde_kundennummer": "K1021212",
"kunde_anschrift": [
{
"anschrift_erstellung": "2020-04-18T15:15:05.000Z",
"Anschrift_land": "England",
"anschrift_Strasse": "River Street",
"land_kuerzel": "en",
"anschrift_postleitzahl": "SW1E 6LB",
"anschrift_ort": "London",
"kunde_id": 2,
"id": 5,
"anschrift_hausnummer": "13"
}
]
}
}
ELASTICSEARCH & DOCKER mit
LOGSTASH, JDBC und Ruby
26.04.2020Autor: Dieter Schanz 32
DAS GANZES TUTORIAL FINDEST DU HIER:
WEITERE TUTORIALS FINDEST DU HIER:
UND DEN QUELLCODE HIER:
HTTPS://YOUTU.BE/6CVRM27D5DY
HTTPS://WWW.CODINGSOLO.DE/
HTTPS://GITHUB.COM/SCHADIET/ELASTICSEARCH-
DOCKER-WITH-LOGSTASH-JDBC-AND-MAGIC

Weitere ähnliche Inhalte

PDF
SimpleDB - Chancen einer Cloud Datenbank
PPTX
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
PDF
MongoDB - Riesige Datenmengen schemafrei verwalten
PDF
Datenbankoptimierung
PDF
Query Result Caching
PDF
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
PDF
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
PDF
MongoDB für Java-Programmierer
SimpleDB - Chancen einer Cloud Datenbank
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
MongoDB - Riesige Datenmengen schemafrei verwalten
Datenbankoptimierung
Query Result Caching
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
AOUG 2019 Oracle Centrally Managed Users 18c / 19c
MongoDB für Java-Programmierer

Ähnlich wie Elasticsearch & docker mit logstash, jdbc und ruby (20)

PPTX
Wie kommt der Client zur Datenbank?
PDF
Agile Oracle database modeling and development - APEX Connect 2020
PDF
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
PDF
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
PDF
MongoDB für Java Programmierer (JUGKA, 11.12.13)
PDF
20181210_ITTage2018_OracleNoSQLDB_KPatenge
PDF
Oracle Technology Monthly Oktober 2017
PPTX
Heterogene Daten(-strukturen) in der Oracle Datenbank
PPTX
Amazon Redshift
PDF
Volltextsuchen in RDBMS (2004)
PDF
Oracle und Docker
PDF
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
PDF
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
PPTX
2008 - Basta!: DAL DIY
PPTX
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
PPTX
Einführung in NoSQL-Datenbanken
PPTX
MongoDB Munich 2012: Spring Data MongoDB
PDF
Big Data Konnektivität
PDF
Cloud Native und Java EE: Freund oder Feind?
PDF
Cloud Native & Java EE: Freund oder Feind?
Wie kommt der Client zur Datenbank?
Agile Oracle database modeling and development - APEX Connect 2020
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
MongoDB für Java Programmierer (JUGKA, 11.12.13)
20181210_ITTage2018_OracleNoSQLDB_KPatenge
Oracle Technology Monthly Oktober 2017
Heterogene Daten(-strukturen) in der Oracle Datenbank
Amazon Redshift
Volltextsuchen in RDBMS (2004)
Oracle und Docker
Oracle vs. PostgreSQL - Unterschiede in 45 Minuten
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
2008 - Basta!: DAL DIY
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
Einführung in NoSQL-Datenbanken
MongoDB Munich 2012: Spring Data MongoDB
Big Data Konnektivität
Cloud Native und Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
Anzeige

Elasticsearch & docker mit logstash, jdbc und ruby

  • 1. ELASTICSEARCH & DOCKER MIT LOGSTASH JDBC UND RUBY
  • 2. AGENDA • ÜBERBLICK • VORBEREITUNG DER CONTAINER • A. START VON MYSQL & PHPMYADMIN • B. VORBEREITUNG DER MYSQL DATENBANK • C. START VON ELASTICSEARCH & KIBANA • IMPLEMENTIERUNG DER KONFIGURATIONSDATEI • A. INPUT (JDBC) • C. FILTER (JDBC_STREAMING, RUBY) • B. OUTPUT (ELASTICSEARCH) • DURCHFÜHRUNG DES IMPORT • START LOGSTASH ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 2
  • 3. ÜBERBLICK • WER BIST DU? • WAS IST DAS ZIEL? • WAS BENÖTIGE ICH? • WIE MACHE ICH DAS? ICH BIN DIETER, EIN ANWENDUNGSENTWICKLER DATEN AUS MYSQL MIT LOGSTASH IN ELASTICSEARCH IMPORTIEREN WIR BRAUCHEN DAFÜR NUR DOCKER + MYSQL-TREIBER WIR STARTEN DOCKER CONTAINER UND ERSTELLEN EIN KONFIGURATIONSDATEI ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 3
  • 4. ÜBERBLICK WAS IST DER PLAN? • WIR LESEN DATEN AUS EINER MYSQL DATENBANK AUS • MANIPULIEREN DIE DATEN • INFORMATION AUS UNTERSCHIEDLICHEN TABELLEN ZU EINEM OBJEKT • IMPORT DER DATEN NACH ELASTICSEARCH ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 4
  • 5. ÜBERBLICK WOZU LOGSTASH? • LOGSTASH IST EINE SERVERSEITIGE OPEN- SOURCE-SOFTWARE • SIMULTANE VERARBEITUNG • DATEN AUS UNTERSCHIEDLICHEN QUELLEN • MANIPULIERUNG UND WEITERLEITUNG DER DATEN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 5 Quelle: https://www.elastic.co/
  • 6. VORBEREITUNG WIR BENÖTIGEN FÜR DIESEN TASK NUR DOCKER CONTAINER • MYSQL & PHPMYADMIN • ELASTICSEARCH • KIBANA • LOGSTASH ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 6
  • 7. VORBEREITUNG STARTE DIE MOTOREN! • STARTE DIE CONTAINER FÜR MYSQL • & PHPMYADMIN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 7 DOCKER RUN --NAME MYSQL-SERVER -P 3306:3306 -E MYSQL_ROOT_PASSWORD=CODINGSOLO -D MYSQL:LATEST DOCKER RUN –NAME MYADMIN -D --LINK MYSQL-SERVER:DB -P 8080:80 PHPMYADMIN/PHPMYADMIN
  • 8. VORBEREITUNG JETZT SUCHEN WIR UNSEREN MYSQL-TREIBER AUF MAVEN • GEH AUF FOLGENDE URL HTTPS://MVNREPOSITORY.COM/ 26.04.2020Autor: Dieter Schanz 8 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby
  • 9. VORBEREITUNG ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 9 • SUCHE NACH MYSQL-CONNECTOR • WÄHLE DIE DIE PASSENDE VERSION AUS, DIE ZU DEINEM MYSQL CONTAINER PASST • DANN LÄDST DU DIR DIE JAR HERUNTER
  • 10. VORBEREITUNG ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 10 LETZTER SCHRITT • LADE DIR MEINE BEISPIEL DATEN FÜR DIE MYSQL DATENBANK HERUNTER • DAMIT WIRD EINE NEUE DATENBANK ANGELEGT, DIE DATENBANK-STRUKTUR UND TESTDATEN • AUßERDEM WIRD EIN NEUER BENUTZER FÜR LOGSTASH ERSTELLT HTTPS://GITHUB.COM/SCHADIET/ELASTICSEARCH-DOCKER- WITH-LOGSTASH-JDBC-AND- MAGIC/BLOB/MASTER/TUTORIAL%20CODINGSOLO.SQL
  • 11. VORBEREITUNG LASS UNS DIE DATENBANK VORBEREITEN! • GEH AUF HTTP://LOCALHOST:8080/ • LOG IN ALS ROOT • PASSWORT WURDE BEIM START DES MYSQL-CONTAINERS GESETZT • IMPORT VON TUTORIAL CODINGSOLO.SQL 26.04.2020Autor: Dieter Schanz 11 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby
  • 12. VORBEREITUNG WIR ERSTELLEN JETZT EINE ORDNERSTRUKTUR • HAUPTORDNER ELASTICSEARCH_IMPORT • UNTERORDNER • DRIVER • PIPELINE • IN DRIVER KOMMT DER MYSQL-CONNECTOR • IN PIPELINE ERSTELLEN WIR DIE KONFIGURATIONSDATEI ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 12
  • 13. VORBEREITUNG WIR ERSTELLEN JETZT EIN DOCKER NETZWERK • FÜR ELASTICSEARCH & KIBANA • NAME IST FREI WÄHLBAR -> SKYNET ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 13 DOCKER NETWORK CREATE SKYNET
  • 14. VORBEREITUNG STARTEN WIR NUN AUCH ELASTICSEARCH & KIBANA DOCKER RUN -D --NAME ELASTICSEARCH --NET SKYNET -P 9200:9200 -P 9300:9300 -E "DISCOVERY.TYPE=SINGLE-NODE" ELASTICSEARCH:7.6.2 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 14 DOCKER RUN -D --NAME KIBANA --NET SKYNET -P 5601:5601 KIBANA:7.6.2
  • 15. VORBEREITUNG WIR PRÜFEN NUN BEIDE SYSTEME: • ELASTICSEARCH ERREICHST DU UNTER HTTP://LOCALHOST:9200/ 26.04.2020Autor: Dieter Schanz 15 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby
  • 16. VORBEREITUNG • KIBANA ERREICHST DU UNTER HTTP://LOCALHOST:5601/ ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 16
  • 17. IMPLEMENTIERUNG JETZT LEGEN WIR LOS! LASS UNS NUN DIE KONFIGURATIONSDATEI BEARBEITEN: • EINE TYPISCHE KONFIGURATION HAT DREI BEREICHE • INPUT • FILTER • OUTPUT • BEI MULTIPLEN DATENOBJEKTEN SOLLTEST DU DEN OBJECT-TYPE ABFRAGEN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 17 input { } filter { ##Check you are working with the correct type if[type] == "XY" { } } output { if[type] == "XY" { } stdout { codec => rubydebug } }
  • 18. IMPLEMENTIERUNG INPUT • JDBC • WIR VERGEBEN EINEN OBJECT-TYPE • BEI MULTIPLEN INPUT-OBJEKTEN NOTWENDIG • SCHEDULE • CRON SYNTAX 26.04.2020Autor: Dieter Schanz 18 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby input { ##JDBC Plugin to Query Data from MySQL jdbc { type => "kundendaten" schedule => "* * * * *" jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT * FROM codingsolo.kunde;" } }
  • 19. IMPLEMENTIERUNG INPUT • JDBC • DRIVER • PFAD ZUM TREIBER (AUF SEITE DES CONTAINERS) • DRIVER CLASS • CONNECTION STRING • ADRESSE DER MYSQL DB & DATENBANKNAME • USER & PASSWORD KAM MIT DEN TESTDATEN • STATEMENT DEIN DATENBANK QUERY 26.04.2020Autor: Dieter Schanz 19 ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby input { ##JDBC Plugin to Query Data from MySQL jdbc { type => "kundendaten" schedule => "* * * * *" jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT * FROM codingsolo.kunde;" } }
  • 20. IMPLEMENTIERUNG FILTER • JDBC_STREAMING FÜR BESTELLUNGEN • DIE JDBC KONFIGURATIONEN AUS DEM JDBC INPUT • STATEMENT • QUERY FÜR WEITERE DATEN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 20 ## jdbc_streaming Plugin add MORE Data ## from different Tables / Databases jdbc_streaming { jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT id as bestellung_id, bestellung_datum, bestellung_status from codingsolo.bestellung WHERE codingsolo.bestellung.kunde_id = :idparam;" parameters => { "idparam" => "id" } target => "kunde_bestellung" }
  • 21. IMPLEMENTIERUNG FILTER • JDBC_STREAMING FÜR BESTELLUNGEN • PARAMETERS • WIR VERKNÜPFEN IDPARAM AUF DIE ID DER DATEN AUS DEM OBJECT-TYPE KUNDENDATEN • TARGET • WIR SPEICHERN DIE DATEN IN DAS NEUE FELD KUNDE_BESTELLUNG ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 21 ## jdbc_streaming Plugin add MORE Data ## from different Tables / Databases jdbc_streaming { jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT id as bestellung_id, bestellung_datum, bestellung_status from codingsolo.bestellung WHERE codingsolo.bestellung.kunde_id = :idparam;" parameters => { "idparam" => "id" } target => "kunde_bestellung" }
  • 22. IMPLEMENTIERUNG FILTER • JDBC_STREAMING FÜR ANSCHRIFT • PARAMETERS • WIR VERKNÜPFEN IDPARAM AUF DIE ID DER DATEN AUS DEM OBJECT-TYPE KUNDENDATEN • TARGET • WIR SPEICHERN DIE DATEN IN DAS NEUE FELD KUNDE_ANSCHRIFT ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 22 ##jdbc_streaming Plugin to add Data from different Tables / Databases jdbc_streaming { jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT codingsolo.kunde_anschrift.kunde_id, anschrift.id, anschrift.anschrift_Strasse, anschrift.anschrift_hausnummer, anschrift.anschrift_postleitzahl, anschrift.anschrift_ort, anschrift.anschrift_erstellung, land_name as Anschrift_land, land_kuerzel FROM codingsolo.kunde_anschrift LEFT JOIN codingsolo.anschrift as anschrift ON codingsolo.kunde_anschrift.anschrift_id = anschrift.id LEFT JOIN codingsolo.land as land ON anschrift.anschrift_land = land.id WHERE codingsolo.kunde_anschrift.kunde_id = :idparam;" parameters => {"idparam" => "id" } target => "kunde_anschrift" }
  • 23. IMPLEMENTIERUNG FILTER • JDBC_STREAMING FÜR BESTELLPOSTEN • PARAMETERS • WIR VERKNÜPFEN IDPARAM AUF DIE ID DER DATEN AUS DEM OBJECT-TYPE KUNDENDATEN • TARGET • WIR SPEICHERN DIE DATEN IN DAS NEUE FELD BESTELLUNG_POSTEN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 23 ##jdbc_streaming Plugin add MORE Data from different Tables / Databases jdbc_streaming { jdbc_driver_library => "/driver/mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://localhost:3306/codingsolo" jdbc_user => "elastic" jdbc_password => "elastic" statement => "SELECT codingsolo.bestellung_artikel.id as bestellung_id, codingsolo.bestellung_artikel.anzahl, artikel.id, artikel.artikel_name, artikel.artikel_preis, artikel.artikel_status FROM codingsolo.bestellung_artikel LEFT JOIN codingsolo.artikel as artikel ON codingsolo.bestellung_artikel.artikel_id = artikel.id WHERE codingsolo.bestellung_artikel.id in :idparam;" parameters => { "idparam" => "bestellung_temp"} target => "bestellung_posten" }
  • 24. IMPLEMENTIERUNG FILTER RUBY CODE • WIR KÖNNEN EIGENE LOGIK IMPLEMENTIEREN • BEISPIEL: ITERATION ÜBER DIE BESTELLUNGEN • AUSLESEN DER BESTELL-ID • SPEICHERN DER BESTELL-ID IN EINER LISTE ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 24 ## Extracting all bestellung_id from Field:kunde_bestellung ## into a List of Strings ruby { code => ' event.get("kunde_bestellung").each do |item| if not event.get("bestellung_temp") event.set("bestellung_temp", [item["bestellung_id"]]) else event.set("bestellung_temp", event.get("bestellung_temp") + [item["bestellung_id"]]) end end ' }
  • 25. IMPLEMENTIERUNG FILTER RUBY CODE • WIR KÖNNEN EIGENE LOGIK IMPLEMENTIEREN • BEISPIEL: ITERATION ÜBER DIE BESTELLPOSTEN UND ÜBER DIE BESTELLUNGEN • ABGLEICH BESTELLUNGEN UND BESTELLPOSTEN • ZUWEISUNG BESTELLPOSTEN ZUR BESTELLUNG ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 25 ## Adding order-line to orders MY GOAL is to include all entries ## from one bestellung_posten into the single kunde_bestellung ruby { code => ' event.get("bestellung_posten").each_with_index do |item, index_item| event.get("kunde_bestellung").each_with_index do |order, index| if order["bestellung_id"] == item["bestellung_id"] if not event.get("[kunde_bestellung][#{index}][bestellung_posten]") event.set("[kunde_bestellung][#{index}][bestellung_posten]", [item]) else event.set("[kunde_bestellung][#{index}][bestellung_posten]", order["bestellung_posten"] + [item]) end end end end ' }
  • 26. IMPLEMENTIERUNG FILTER MUTATE • WIR RÄUMEN DIE DATEN AUF • REMOVE_FIELD ENTFERNT EINE FELD IM DOKUMENT ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 26 ##clean up mutate { remove_field => [ "bestellung_posten"] remove_field => [ "bestellung_temp"] }
  • 27. IMPLEMENTIERUNG OUTPUT • ELASTICSEARCH • ABFRAGE DES TYPES • (UNTERSCHIEDLICHE IPUTS -> UNTERSCHIEDLICHE TYPEN) • HOST AUF DEM ELASTICSEARCH LÄUFT • INDEX • AUF WELCHEM INDEX WERDEN DIE DATEN GESPEICHERT ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 27 output { if[type] == "kundendaten" { elasticsearch { hosts => "localhost:9200" index => "kundendaten" document_type => "_doc" document_id => "%{id}" doc_as_upsert => true action => "update" } } stdout { codec => rubydebug } }
  • 28. IMPLEMENTIERUNG OUTPUT • ELASTICSEARCH • DOCUMENT_ID • DU KANNST EINE ID VERGEBEN • DOC_AS_UPSERT • DAMIT DATEN BEI AKTUALISIERUNG ÜBERSCHRIEBEN WERDEN • WICHTIG! IMMER EIN STANDARD OUTPUT EINBAUEN • DEBUG REASON ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 28 output { if[type] == "kundendaten" { elasticsearch { hosts => "localhost:9200" index => "kundendaten" document_type => "_doc" document_id => "%{id}" doc_as_upsert => true action => "update" } } stdout { codec => rubydebug } }
  • 29. DURCHFÜHRUNG BEVOR WIR LOGSTASH STARTEN: • FÜR DIESES BEISPIEL GEBEN WIR DEN HOST ALS NETWORK AN: • --NET="HOST" • -V = ORDNER FREIGABE HOST:CONTRAINER -V D:ELASTICSEARCH_IMPORTPIPELINE:/USR/SHARE/LOGSTASH/PIPELINE/ • WIR VERKNÜPFEN UNSEREN ORDNER PIPELINE MIT DEM AUS DEM CONTAINER • CONTAINER-SEITIG ÜBERPRÜFT LOGSTASH OB IN PIPELINE KONFIGURATIONSDATEIEN BEREITLIEGEN • ACHTE DABEI AUF DEN PFAD ZUM ORDNER. DEIN PFAD KANN ABWEICHEN ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 29
  • 30. DURCHFÜHRUNG STARTE WIR ENDLICH LOGSTASH! • FREIGABE UNSERES ORDNER DRIVER • LOGSTASH BENÖTIGT NOCH UNSEREN MYSQL-TREIBER ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 30 DOCKER RUN -IT --RM --NAME LOGSTASH --NET="HOST" -V D:ELASTICSEARCH_IMPORTPIPELINE: /USR/SHARE/LOGSTASH/PIPELINE/ -V D:ELASTICSEARCH_IMPORTDRIVER :/DRIVER/ DOCKER.ELASTIC.CO/LOGSTASH/LOGSTASH:7.6.2
  • 31. DURCHFÜHRUNG ÜBERPRÜFE DEIN ERGEBNIS: • GEH AUF FOLGENDE ADRESSE: HTTP://LOCALHOST:9200/KUNDENDATEN/_DOC/2 • ES SOLLTEN NUN DATEN DES KUNDEN MIT ANSCHRIFT UND BESTELLUNGEN ANGEZEIGT WERDEN • ALTERNATIV KÖNNEN WIR AUCH KIBANA NUTZEN FIREFOX HAT EINE JSON-VIEWER ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 31 { "_index": "kundendaten", "_type": "_doc", "_id": "2", "_source": { "kunde_name": "Willson", "kunde_sperrung": false, "@version": "1", "kunde_vorname": "Sam", "type": "kundendaten", "kunde_bestellung": [ { "bestellung_datum": "2020-04-13T17:34:21.000Z", "bestellung_status": "In Bearbeitung", "bestellung_posten": [ { "anzahl": 5, "artikel_preis": 80.99, "bestellung_id": 8003, "artikel_name": "Gaming Maus (Pro Gramer)", "id": 7, "artikel_status": "gering" } ], "bestellung_id": 8003 } ], "kunde_erstellung": "2020-04-18T15:02:25.000Z", "id": 2, "kunde_geburtsdatum": "1992-11-01T00:00:00.000Z", "@timestamp": "2020-04-25T17:58:00.547Z", "kunde_kundennummer": "K1021212", "kunde_anschrift": [ { "anschrift_erstellung": "2020-04-18T15:15:05.000Z", "Anschrift_land": "England", "anschrift_Strasse": "River Street", "land_kuerzel": "en", "anschrift_postleitzahl": "SW1E 6LB", "anschrift_ort": "London", "kunde_id": 2, "id": 5, "anschrift_hausnummer": "13" } ] } }
  • 32. ELASTICSEARCH & DOCKER mit LOGSTASH, JDBC und Ruby 26.04.2020Autor: Dieter Schanz 32 DAS GANZES TUTORIAL FINDEST DU HIER: WEITERE TUTORIALS FINDEST DU HIER: UND DEN QUELLCODE HIER: HTTPS://YOUTU.BE/6CVRM27D5DY HTTPS://WWW.CODINGSOLO.DE/ HTTPS://GITHUB.COM/SCHADIET/ELASTICSEARCH- DOCKER-WITH-LOGSTASH-JDBC-AND-MAGIC