2016-09-27 4 views
0

Angenommen, ich habe eine riesige Datenbank (Tabelle a) über Mitarbeiter in einer bestimmten Abteilung, die die Mitarbeiternamen zusätzlich zu vielen anderen Bereichen umfasst. Jetzt in einer anderen Datenbank (oder einer anderen Tabelle, sagen wir Tabelle b) habe ich nur zwei Einträge; der Name des Mitarbeiters und seine ID. Aber diese Tabelle (b) enthält Einträge nicht nur für eine Abteilung, sondern für die gesamte Firma. Das Rohformat für beide Tabellen sind Textdateien, also parse ich sie mit logstash in Elasticsearch und visualisiere dann die Ergebnisse mit Kibana.Joining Tables in Kibana

Jetzt, nachdem ich mehrere Visualisierungen von Tabelle (a) in Kibana erstellt habe, wo die X-Achse den Angestelltennamen zeigt, merke ich, es wäre schön, wenn wir stattdessen die Angestellten-IDs hätten. Da ich weiß, dass ich diese Informationen in Tabelle (b) habe, suche ich nach einer Möglichkeit, Kibana mitzuteilen, den Namen des Mitarbeiters in den aus Tabelle (a) generierten Diagrammen in Mitarbeiter-ID basierend auf Tabelle (b) zu übersetzen. Meine Fragen sind wie folgt:

1) Gibt es eine Möglichkeit, dies in Kibana direkt zu tun? Wenn ja, können wir es tun, wenn jede Tabelle in einem separaten Index gespeichert wird oder müssen wir sie beide im selben Indext speichern?

2) Wenn dies nicht direkt in Kibana durchgeführt werden kann und beim Indizieren der Daten durchgeführt werden muss, gibt es eine Möglichkeit, beide Textdateien mit logstash noch separat zu analysieren?

ich Elasticsearch weiß, ist eine nicht-relationale Datenbank und ist daher nicht für SQL-ähnliche Funktionalitäten (Join) ausgelegt. Es sollte jedoch eine Entsprechung oder eine Problemumgehung geben. Dies ist nur ein einfacher Anwendungsfall, aber die generelle Frage ist natürlich, wie man Daten aus verschiedenen Quellen korreliert. Ansonsten wäre Elasticsearch ehrlich gesagt nicht so mächtig.

Antwort

3

Similar questions wurden asked und answered.

Grundsätzlich ist die Antwort, dass ist - nein, du nicht in Kibana schließt sich tun können, müssen Sie sie während der Indexierung zu tun. Platz ist billig und elasticsearch verarbeitet doppelte Daten, also erstellen Sie einfach alle Felder, die Sie zur Indizierung anzeigen möchten.

+0

Ok, also die Antwort ist Nummer 2. Wie kann ich das in logstash tun? Ich habe einige Beispiele in der Dokumentation gesehen, wo man das zum Beispiel auf Basis von Eltern-Kind-Beziehungen tun kann, aber dafür muss man manuell definieren, welches Kind zu welchem ​​Elternteil gehört, also ist dies kein echter Beitritt! Und natürlich kann ich meine Daten nicht manuell hochladen, da wir über Millionen von Datensätzen sprechen – mshabeeb

2

Sie könnten Kibi einen Versuch geben möchten.