基于 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。会推荐。