当在Redash中使用Elasticsearch作为数据源时遇到的问题
由于Redash作为数据源可以使用Elasticsearch,因此我尝试了一下,发现了一些问题。
环境
Redash(v7.0.0):红色用户界面(v7.0.0)
Elasticsearch(v7.3.2):弹性搜索引擎(v7.3.2)
請問一下
无法将 Elasticsearch 查询结果正确地(按预期)转化为表格形式。
当在Redash中执行查询时,通过QueryRunner来发出查询并显示结果,如下所示。
从画面上执行查询 → 查询运行器 → Elasticsearch → 查询运行器 → 以表格形式在画面上显示结果。
我确认了Elasticsearch查询结果与预期相符,因此我发现了问题所在:无法通过QueryRunner将Elasticsearch查询结果解析为表格形式。
执行多个聚合查询的结果
执行嵌套了下列聚合的查询。
{
"index": "インデックス名",
"size": 1000,
"aggs": {
"1st": {
"terms": {
"field": "LogDate"
},
"aggs": {
"2nd": {
"terms": {
"field": "SectionName"
}
}
}
}
}
}
从形象上来看,希望根据日期和部门进行汇总,得到以下的结果。
然而,在Redash中表格的结果显示如下:
→ 现在无法清楚地知道是如何聚合以及数字代表了什么。
JSON结构变得复杂的情况
例如,如果使用Sum Bucket Aggregation,那么Elasticsearch查询结果将在与桶的根节点相同层级上存在另一个桶。
{
・
・
・
"aggregations": {
"バケット名": {
"buckets": [
{
バケット結果
}
]
},
"SUM BUCKET名": {
"value": 1000.0
}
}
}
结果只以“桶名”为基础以表格形式显示
※结果只以“桶名”为基础以表格形式显示,但若聚合是嵌套的情况下,将出现前述的问题
※“SUM 桶名”将被抛弃
应对方式 (duì shì)
要解决这些问题,有以下一种选择:
1. 修改现有的Redash源代码或添加扩展程序来进行程序适配。
可以参考扩展程序的适配方法,具体可参考”扩展Redash的QueryRunner”。
2. 提出问题报告并等待更新(或自己进行修复)。
总结
如果数据源是Elasticsearch,那么选择Kibana的情况很多吗?从发生的问题的行为(作为查询模式,应该是绝对正确的)来看,它几乎没有被使用吗?
如果选择将数据源设为Elasticsearch,就不要使用Redash。
如果要使用Redash,则不要将数据源设为Elasticsearch,如果必须使用,只能使用简单的查询。
我感觉以这种方式实现更加有效。
闲谈
我把数据源改成了Kibana,想着结果会有所变化,试了一下,但是由于只是在Kibana的查询中进行处理,所以结果是相同的。
数据源并不是Kibana,而只是能够使用针对Kibana编写的查询的行为。
由于这样并非如此,需要注意一下。并不能通过Kibana获得结果。
从画面上执行查询 → 查询运行器 → Kibana(Elasticsearch)→ 查询运行器 → 在画面上以表格形式展示结果。