Es scheint, dass Elasticsearch als Datenquelle für Redash verwendet werden kann. Als ich es ausprobierte, stellte ich fest, dass es verschiedene Probleme gab.
Redash(v7.0.0) Elasticsearch(v7.3.2)
** 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. ** ** **
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 |
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.
Um diese Probleme zu lösen
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.
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