Il semble qu'Elasticsearch puisse être utilisé comme source de données pour Redash, donc quand je l'ai essayé, j'ai trouvé qu'il y avait divers problèmes.
Redash(v7.0.0) Elasticsearch(v7.3.2)
** Les résultats des requêtes d'Elasticsearch ne peuvent pas être correctement tabulaires (attendus). ** **
Lorsque la requête est exécutée à partir de Redash, la requête est émise et le résultat est affiché via QueryRunner comme indiqué ci-dessous.
Exécuter la requête depuis l'écran → QueryRunner → Elasticsearch → QueryRunner → Afficher le résultat sous forme de tableau à l'écran
** J'ai pu confirmer que les résultats de la requête d'Elasticsearch étaient comme prévu, j'ai donc trouvé que le problème cette fois était que les résultats de la requête d'Elasticsearch ne pouvaient pas être analysés de manière tabulaire avec QueryRunner. ** **
Exécutez une requête avec une agrégation imbriquée comme indiqué ci-dessous.
{
"index": "Nom de l'index",
"size": 1000,
"aggs": {
"1st": {
"terms": {
"field": "LogDate"
},
"aggs": {
"2nd": {
"terms": {
"field": "SectionName"
}
}
}
}
}
}
En tant qu'image, nous allons regrouper par date et par département, alors attendez-vous aux résultats suivants.
LogDate | SectionName | nombre |
---|---|---|
29 octobre 2019 | Département système | 10 |
29 octobre 2019 | Département des Ressources Humaines | 20 |
29 octobre 2019 | Département des affaires générales | 30 |
30 octobre 2019 | Département système | 100 |
30 octobre 2019 | Département des Ressources Humaines | 200 |
30 octobre 2019 | Département des affaires générales | 300 |
Cependant, ce qui s'affiche à la suite de Table dans Redash est le suivant. → Je ne sais pas quel est le total et combien.
2nd | doc_count |
---|---|
(Une valeur de SectionName) | 110 |
(Une valeur de SectionName) | 220 |
(Une valeur de SectionName) | 330 |
Par exemple, lorsque Sum Bucket Aggregation est utilisé, le résultat de la requête d'Elasticsearch montre qu'un autre compartiment existe dans la même hiérarchie que la racine du compartiment, comme illustré ci-dessous.
{
・
・
・
"aggregations": {
"Nom du godet": {
"buckets": [
{
Résultat du godet
}
]
},
"Nom du SUM BUCKET": {
"value": 1000.0
}
}
}
Les résultats sont affichés sous forme de tableau uniquement pour le "nom du compartiment"
Pour résoudre ces problèmes -Modifiez la source existante de Redash ou ajoutez un programme d'extension pour prendre en charge le programme. Pour le support du programme d'extension, veuillez vous référer à "Extending Redash's Query Runner". ・ Créez un PROBLÈME et attendez la mise à jour (ou déplacez-vous par vous-même)
Peut-être que lorsque Elasticsearch est utilisé comme source de données, Kibana est souvent sélectionné, ou il est rarement utilisé en raison du comportement du problème qui s'est produit (qui sera certainement le modèle de requête).
"Si votre source de données est Elasticsearch, n'utilisez pas Redash." "Si vous utilisez Redash, ne créez pas la source de données Elasticsearch, si vous le faites, juste une simple requête."
J'ai senti qu'il serait plus efficace de le réaliser de cette manière.
Je me suis demandé si le résultat changerait si Kibana était utilisé comme source de données, mais le résultat était le même car il n'était traité que par la description de la requête pour Kibana.
La source de données n'était pas Kibana et la requête était uniquement pour Kibana.
Exécuter la requête depuis l'écran → QueryRunner → Kibana (Elasticsearch) → QueryRunner → Afficher le résultat sous forme de tableau sur l'écran