基于 ES REST API 查询创建 Kibana 可视化
Creating a Kibana visualization based off of an ES REST API query
我有一个可以在 Kibana 控制台中 运行 查询。它 returns 我们 运行 在某个内部集群上按作业名称分组的所有作业,聚合显示每个作业的成功和错误计数。我可以通过控制台 运行 这样做:
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
}
}
}
},
...
}
我想将其放入某种可视化(可能是数据 Table)中,它包含 3 列:工作名称、成功、不成功,我希望 table 仅显示“不成功”列的前 N 个。
我对 ES 和 Kibana 很陌生,所以我花了一段时间才让这个聚合工作,现在我不知道如何使用这个查询来构建可视化,因为它看起来像可视化希望我使用某种 GUI 和限制性 KQL 或 Lucene 语法构建查询,而不是仅仅粘贴到此请求中。
有没有我忽略的东西?我如何从这些结果中获得有用的可视化效果?
Kibana 只能以相反的方式工作——您可以构建可视化效果,然后检查它们背后的查询。粘贴请求并让系统“弄清楚”您想要显示什么以及如何是不可行的。我希望不是。
但回到最初的问题——构建查询时不需要 KQL 或 Lucene 语法——你也可以使用查询 DSL!
但是聚合确实需要 KQL 或 Lucene...
至于数据 table,这是我能得到的最接近的数据:
如果 Kibana 不支持,您需要自己创建 charts/diagrams/tables。但在您这样做之前,请查看 retool.com (no affiliation). They let you connect to ES、post-处理 ES 响应,并以超级简单的方式创建您喜欢的数据 table。会推荐。
我有一个可以在 Kibana 控制台中 运行 查询。它 returns 我们 运行 在某个内部集群上按作业名称分组的所有作业,聚合显示每个作业的成功和错误计数。我可以通过控制台 运行 这样做:
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
}
}
}
},
...
}
我想将其放入某种可视化(可能是数据 Table)中,它包含 3 列:工作名称、成功、不成功,我希望 table 仅显示“不成功”列的前 N 个。
我对 ES 和 Kibana 很陌生,所以我花了一段时间才让这个聚合工作,现在我不知道如何使用这个查询来构建可视化,因为它看起来像可视化希望我使用某种 GUI 和限制性 KQL 或 Lucene 语法构建查询,而不是仅仅粘贴到此请求中。
有没有我忽略的东西?我如何从这些结果中获得有用的可视化效果?
Kibana 只能以相反的方式工作——您可以构建可视化效果,然后检查它们背后的查询。粘贴请求并让系统“弄清楚”您想要显示什么以及如何是不可行的。我希望不是。
但回到最初的问题——构建查询时不需要 KQL 或 Lucene 语法——你也可以使用查询 DSL!
但是聚合确实需要 KQL 或 Lucene...
至于数据 table,这是我能得到的最接近的数据:
如果 Kibana 不支持,您需要自己创建 charts/diagrams/tables。但在您这样做之前,请查看 retool.com (no affiliation). They let you connect to ES、post-处理 ES 响应,并以超级简单的方式创建您喜欢的数据 table。会推荐。