[PYTHON] Probleme bei der Verwendung von Elasticsearch als Datenquelle in Redash

Es scheint, dass Elasticsearch als Datenquelle für Redash verwendet werden kann. Als ich es ausprobierte, stellte ich fest, dass es verschiedene Probleme gab.

Umgebung

Redash(v7.0.0) Elasticsearch(v7.3.2)

Problem

** Abfrageergebnisse von Elasticsearch können nicht korrekt (erwartet) tabellarisch dargestellt werden. ** ** **

Wenn die Abfrage von Redash ausgeführt wird, wird die Abfrage ausgegeben und das Ergebnis über QueryRunner angezeigt (siehe unten).

Abfrage über den Bildschirm ausführen → QueryRunner → Elasticsearch → QueryRunner → Das Ergebnis in Tabellenform auf dem Bildschirm anzeigen

** Ich konnte bestätigen, dass die Abfrageergebnisse von Elasticsearch wie erwartet waren. Daher stellte ich fest, dass das Problem diesmal darin bestand, dass die Abfrageergebnisse von Elasticsearch mit QueryRunner nicht tabellarisch analysiert werden konnten. ** ** **

Ergebnisse der Ausführung mehrerer Aggregationsabfragen

Führen Sie eine Abfrage mit verschachtelter Aggregation wie unten gezeigt aus.

{
    "index": "Indexname",
    "size": 1000,
    "aggs": {
        "1st": {
            "terms": {
                "field": "LogDate"
            },
            "aggs": {
                "2nd": {
                    "terms": {
                        "field": "SectionName"
                    }
                }
            }
        }
    }
}

Als Bild werden wir nach Datum und Abteilung aggregieren. Erwarten Sie daher die folgenden Ergebnisse.

LogDate SectionName Nummer
29. Oktober 2019 Systemabteilung 10
29. Oktober 2019 Personalabteilung 20
29. Oktober 2019 Abteilung Allgemeine Angelegenheiten 30
30. Oktober 2019 Systemabteilung 100
30. Oktober 2019 Personalabteilung 200
30. Oktober 2019 Abteilung Allgemeine Angelegenheiten 300

Als Ergebnis der Tabelle in Redash wird jedoch Folgendes angezeigt. → Ich weiß nicht, wie hoch die Summe ist und wie viele.

2nd doc_count
(Ein Wert von SectionName) 110
(Ein Wert von SectionName) 220
(Ein Wert von SectionName) 330

Fall, in dem die Struktur von JSON kompliziert wird

Wenn beispielsweise die Summen-Bucket-Aggregation verwendet wird, zeigt das Abfrageergebnis von Elasticsearch, dass ein anderer Bucket in derselben Hierarchie wie der Stamm des Buckets vorhanden ist (siehe unten).

{
・
・
・
   "aggregations": {
      "Eimername": {
         "buckets": [
            {
Eimer Ergebnis
            }
         ]
      },
      "SUM EIMER Name": {
          "value": 1000.0
      }
   }
}

Die Ergebnisse werden nur für den "Bucket-Namen" in Tabellenform angezeigt.

Wie soll man antworten

Um diese Probleme zu lösen

Zusammenfassung

Wenn Elasticsearch als Datenquelle verwendet wird, wird möglicherweise häufig Kibana ausgewählt, oder es wird aufgrund des Verhaltens des aufgetretenen Problems (das definitiv das Abfragemuster sein wird) selten verwendet.

"Wenn Ihre Datenquelle Elasticsearch ist, verwenden Sie Redash nicht." "Wenn Sie Redash verwenden, machen Sie die Datenquelle Elasticsearch nicht zu einer einfachen Abfrage."

Ich hatte das Gefühl, dass es effizienter wäre, dies auf diese Weise zu realisieren.

Beiseite

Ich fragte mich, ob sich das Ergebnis ändern würde, wenn Kibana als Datenquelle verwendet würde, aber das Ergebnis war dasselbe, da es nur von der Beschreibung der Abfrage für Kibana verarbeitet wurde.

Die Datenquelle war nicht Kibana, und die Abfrage war nur für Kibana.

Abfrage über den Bildschirm ausführen → QueryRunner → Kibana (Elasticsearch) → QueryRunner → Das Ergebnis in Tabellenform auf dem Bildschirm anzeigen

Recommended Posts

Probleme bei der Verwendung von Elasticsearch als Datenquelle in Redash
Tipps für eine gute Verwendung von Elastic Search
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Ein Hinweis beim Erstellen eines gerichteten Diagramms mit Graphviz in Python
Erhalten Sie mit QIIME2 OTU-Zähldaten (Mikroorganismen) als Textdatei
Schreiben Sie auf, was ich bei der Formatierung von Pos-Daten mit ipython verwendet habe
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
So aktualisieren Sie eine in Tableau gepackte Arbeitsmappen-Datenquelle mit Python
Versuchen Sie, Elasticsearch als Grundlage für Ihr Frage- und Antwortsystem zu verwenden
Ein Memorandum bei der Verwendung von schöner Suppe
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Bei Verwendung regulärer Ausdrücke in Python
Beim Schreiben eines Programms in Python
Überprüfen Sie Punkte, wenn MIDI in einem Programm mit SDL_mixer nicht funktioniert
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
Kenntnisse beim Erstellen eines Bots mit discord.py
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Vorsichtsmaßnahmen bei Verwendung der for-Anweisung in Pandas
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Scraping von Websites mit JavaScript in Python
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
SELECT-Daten mithilfe der Client-Bibliothek mit BigQuery
Ein Memorandum über Probleme beim Formatieren von Daten
Führen Sie Raw SQL mit Redash unter Verwendung der Python-Datenquelle aus und zeigen Sie das Ergebnis an
Speichern Sie die Einstellungsbedingungen als CSV-Datei mit UDF Manager mit OCTA