有没有办法在 Kibana 仪表板中定义动态查询?

Is there a way to define a dynamic query in Kibana dashboard?

有人问了一个有点类似的问题 here,但目前还没有答案。这个问题涉及到旧版本的 Kibana,所以我希望你能帮助我。

我正在尝试在 Kibana 仪表板中设置一些预定义的查询。我正在使用 Kibana 5.1。这些查询的目的是根据多个不同的参数过滤一些日志。

让我们看看我要执行的查询:

{
  "index": "${index_name}",
  "query": {
    "query_string": {
      "query": "message:(+\"${LOG_LEVEL}\")",
      "analyze_wildcard": true
    }
  }
}

我知道我可以直接在仪表板中查询 "message:(+"ERROR")" 并手动将 ERROR 更改为 WARN,但我不希望这样 - 想象一下查询可能更复杂并且包含多个字段。

请注意 message 中存储的数据 未结构化 - 将消息视为整个日志行。这意味着我没有像 LOG_LEVEL 这样可以直接过滤的字段。

有什么方法可以从 Kibana Discover 仪表板动态设置 index_nameLOG_LEVEL 吗?

您应该去发现、打开一个文档并在任何字段中单击此按钮。在此之后,搜索栏下方将出现一个过滤器,您可以对其进行编辑并放置任何自定义查询。如果您想添加更多具有更多自定义查询的过滤器,您可以对不同的文档或字段重复相同的操作,或者您可以对设置(或管理)、保存的对象进行操作,转到您保存的搜索和 JSON表示并根据需要多次复制并粘贴 filter 数组字段中的元素。

请记住,为了应用其中一个过滤器,您可能应该禁用已启用的过滤器(否则它将被仪表板中所有已启用的过滤器过滤)。