ist es möglich mit Kibana (vorzugsweise der neuen Version 4 beta) anwendungsseitige Joins durchzuführen?Elasticsearch/Kibana: Applikationsseitige Joins
Ich weiß, dass ES/Kibana nicht als Ersatz für relationale Datenbanken gebaut wurde und es ist normalerweise eine bessere Idee, meine Daten zu denormalisieren. In diesem Anwendungsfall ist dies jedoch nicht der beste Ansatz, da die Indexgröße explodiert und die Leistung sinkt:
Ich indexiere Milliarden von Dokumenten, die Sitzungsinformationen von Netzwerkflüssen enthalten, wie folgt: source ip, source port, Ziel-IP, Ziel-Port, Zeitstempel.
Jetzt möchte ich auch zusätzliche Informationen für jede IP-Adresse, wie Geolocation, Asn, Reverse-DNS usw. sammeln. Hinzufügen dieser Informationen zu jeder einzelnen Sitzung Dokument macht die gesamte Datenbank nicht handhabbar: Es gibt Millionen von Dokumenten mit der gleichen IP Adressen und die Redundanz des Hinzufügens der gleichen zusätzlichen Informationen zu all diesen Dokumenten führt zu einem massiven Aufblähen und einer nicht-reagierenden Benutzererfahrung selbst auf einem Cluster mit Hunderten von Gigabytes RAM.
Stattdessen möchte ich einen separaten Index erstellen, der nur eindeutige IP-Adressen und die Metadaten enthält, die ich zu jedem von ihnen gesammelt habe.
Die Frage ist: Wie kann ich noch meine Daten mit Kibana analysieren? Für jedes von der Abfrage zurückgegebene Dokument sollte kibana im ip-index nachschlagen und jede IP-Adresse mit diesen Informationen virtuell anreichern. Etwas wie das Hinzufügen von virtuellen Felder so die Struktur wie folgt aus (on the fly) aussehen:
Quell-IP, Quellport, Herkunftsland, Quelle asn, Quelle fqdn
Ich bin mir bewusst, dass dies kommen auf Kosten von mehreren Abfragen.
Aus Neugier verwenden Sie doc_values für Ihren nicht analysierten Feldcache? Persönlich, bevor ich überhaupt versuchen würde, meine Daten zu normalisieren, würde ich versuchen, zu doc_values zu wechseln, um zu sehen, ob das half. Sie könnten auch int globale Ordnungszahlen (zB https://www.elastic.co/guide/en/elasticsearch/reference/1.6/fielddata-formats.html) suchen, aber mit hohen Kardinalitätsdaten denke ich eigentlich nicht sei eine sehr gute Idee .... – evanv