elasticsearch - 基于 ES REST API 查询创建 Kibana 可视化
问题描述
我有一个可以在 Kibana 控制台中运行的查询。它返回我们在按作业名称分组的某个内部集群上运行的所有作业,聚合显示每个作业的成功和错误计数。我可以像这样通过控制台运行它:
GET /jobs-*/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"kind": "job"
}
}
]
}
},
"aggs": {
"jobs": {
"terms": {
"field": "job.keyword"
},
"aggs": {
"results": {
"filters": {
"other_bucket_key": "unsuccessful",
"filters" : {
"successful" : { "match" : { "result" : "success" }}
}
}
}
}
}
}
}
响应看起来像这样:
"aggregations" : {
"jobs" : {
"doc_count_error_upper_bound" : 28316,
"sum_other_doc_count" : 60708253,
"buckets" : [
{
"key" : "SomeJobName",
"doc_count" : 38410,
"results" : {
"buckets" : {
"successful" : {
"doc_count" : 38206
},
"unsuccessful" : {
"doc_count" : 204
}
}
}
},
...
}
我想将其放入某种可视化(可能是数据表)中,其中包含 3 列:作业名称、成功、不成功,并且我希望该表仅按“不成功”列的计数显示其中的前 N 个。
我对 ES 和 Kibana 还很陌生,所以我花了一段时间才让这个聚合工作,现在我不知道如何使用这个查询来构建一个可视化,因为看起来可视化想要我使用某种 GUI 和限制性 KQL 或 Lucene 语法来构建查询,而不是仅仅粘贴在这个请求中。
有什么我忽略的吗?如何从这些结果中获得有用的可视化?
解决方案
Kibana 只能以相反的方式工作——您可以构建可视化,然后检查它们背后的查询。粘贴请求并让系统“弄清楚”您要显示的内容和方式是不可行的。我希望不是。
但回到最初的问题——构建查询时不需要 KQL 或 Lucene 语法——你也可以使用查询 DSL!
但是聚合确实需要 KQL 或 Lucene ......
当 Kibana 不削减它时,您需要自己创建图表/图表/表格。但在此之前,请查看retool.com(无从属关系)。它们让您连接到 ES,对 ES 响应进行后处理,并以一种超级简单的方式创建您喜欢的数据表。会推荐。
推荐阅读
- reactjs - 带有打字稿问题的 Axios 发布请求
- java - 为什么在项目文件解压和重新压缩后检查程序找不到文件?
- java - 光标更新后,Android CursorTreeAdapter 不更新组光标/折叠组
- java - Java (Eclipse) - Selenium - xpath - 无法识别 Web 元素
- delphi - 如何在 Delphi 中获取用户输入文件或目录的正确文本大小写?
- python - Discord 下拉菜单没有响应
- javascript - PHP/javascript:如何使用 DOMDocument loadHTMLFile 加载当前页面
- go - 如何在 Windows 10 上控制 WebView 窗口上的图标
- python - 如何在每次迭代中成对组合列表元素而不重复?
- r - 预测的 glm() 值与 ggplot2 geom_smooth() 图不匹配