加载中

使用 Console 运行 API 请求

Console 是一个交互式 UI,用于向 Elasticsearch APIKibana API 发送请求并查看其响应。

Console

要打开 Console,请在导航菜单中找到 Dev Tools,或使用全局搜索栏

你还可以在某些搜索解决方案和 Elasticsearch 无服务器项目页面上直接找到 Console,在那里你可以从页脚将其展开。这个称为 Persistent Console 的 Console 具有与 Dev Tools 中的 Console 相同的功能并共享相同的历史记录。

Console

Console 接受采用简化 HTTP 请求语法编写的命令。例如,以下 GET 请求调用了 Elasticsearch 的 _search API

GET /_search
{
  "query": {
    "match_all": {}
  }
}
		

以下是等效的 cURL 命令

curl -XGET "https://:9200/_search" -d'
{
  "query": {
    "match_all": {}
  }
}'
		

在发往 Kibana API 端点的请求前加上 kbn:

GET kbn:/api/index_management/indices
		

当你键入命令时,Console 会提供上下文相关的建议。这些建议会显示每个 API 的参数并加快你的输入速度。

你可以在 Console 设置中配置自动补全的偏好选项。

你可以使用双正斜杠或井号来创建单行注释,从而编写注释或临时禁用请求的一部分。

# This request searches all of your indices.
GET /_search
{
  // The query parameter indicates query context.
  "query": {
    "match_all": {}
  }
}
		
  1. 匹配所有文档。

你还可以使用一个正斜杠后跟一个星号来标记多行注释的开始。星号后跟正斜杠表示结束。

GET /_search
{
  "query": {
    /*"match_all": {
      "boost": 1.2
    }*/
    "match_none": {}
  }
}
		

点击 Variables 来创建、编辑和删除变量。

Variables

你可以在请求的路径和正文中引用这些变量。每个变量可以被引用多次。

GET ${pathVariable}
{
  "query": {
    "match": {
      "${bodyNameVariable}": "${bodyValueVariable}"
    }
  }
}
		

默认情况下,正文中的变量可以通过去掉附近的引号(而不是保留周围的引号作为字符串)来替换为布尔值、数字、数组或对象。三引号会覆盖此默认行为,并强制作为字符串进行简单替换。

GET /locations/_search
{
  "query": {
    "bool": {
      "must": {
        "match": {
          // ${shopName} shall be replaced as a string if the variable exists.
          "shop.name": """${shopName}"""
        }
      },
      "filter": {
        "geo_distance": {
          "distance": "12km",
          // "${pinLocation}" may be substituted with an array such as [-70, 40].
          "pin.location": "${pinLocation}"
        }
      }
    }
  }
}
		

你还可以在请求正文较长的字符串值中嵌入 ${variableName}。该标记会被原地替换,因此当 indexName 设置为 logs 时,"frozen_${indexName}" 将变为 "frozen_logs"。空字符串值的变量会被替换为 ""

				PUT _index_template/${indexName}-template
					{
  "index_patterns": ["${indexName}-*"],
  "template": {
    "aliases": {
      "frozen_${indexName}": {}
    }
  }
}
		

自动格式化功能可帮你将请求格式化得更易读。选择一个或多个要格式化的请求,打开上下文菜单,然后选择 Auto indent

转到行号
Ctrl/Cmd + L
自动缩进当前请求
Ctrl/Cmd + I
跳转到下一个请求结尾
Ctrl/Cmd +
跳转到上一个请求结尾
Ctrl/Cmd +
打开当前请求的文档
Ctrl/Cmd + /
运行当前请求
Ctrl/Cmd + Enter
应用自动补全菜单中的当前项或最顶项
EnterTab
关闭自动补全菜单
Esc
在自动补全菜单中导航项目
+

要查看 API 端点的文档,请选中该请求,然后打开上下文菜单并选择 Open API reference

当你准备好运行请求时,选中该请求,然后点击运行按钮。

请求执行的结果将显示在响应面板中,你可以在其中看到

  • JSON 响应
  • 与请求对应的 HTTP 状态码
  • 执行时间(以毫秒为单位)。
提示

你可以选中多个请求并一起提交。Console 会逐个执行这些请求。当你调试问题或尝试在多种场景下组合查询时,提交多个请求会非常有用。

使用响应过滤需要一个成功的响应。要过滤或转换响应

  1. 运行一个请求,然后在响应面板中选择 Filter response
  2. 选择过滤模式
    • JQ expression:提取或转换 JSON 响应中的值。
    • Regular expression:逐行匹配响应。选择 Include 以保留匹配的行,或选择 Exclude 以将其移除。
  3. 输入表达式,然后选择 Apply

响应面板将显示过滤后的输出。清除表达式以恢复完整的响应。

JQ 表达式仅适用于 JSON 响应。Console 支持以下 JQ 操作

  • 字段和数组访问:.field.["field-name"].items[0].items[-1].items[1:3]
  • 迭代和遍历:用于数组元素的 .items[]、用于数组元素或对象值的 .[]、诸如 .field? 的可选访问,以及使用 .. 的递归下降
  • 管道和过滤:|select(...)
  • 比较和逻辑:==!=<><=>=andornot
  • 值检查和重塑:keysto_entriesfrom_entries[expression]{key: expression}
  • 字符串操作:trimltrimrtrimstartswith("...")endswith("...")ltrimstr("...")rtrimstr("...")split("...")
  • 数组连接:join("...")

例如

  • 返回第一个搜索结果:.hits.hits[0]
  • 从每个搜索结果中返回 _source 对象:.hits.hits[] | ._source
  • 返回 status 字段为 active 的搜索结果的 _source 对象:.hits.hits[] | select(._source.status == "active") | ._source
  • 返回获取映射响应中每个索引的映射:.[].mappings
  • 列出顶层响应字段:keys

选择 Filter expression help 以在 Console 中查看更多示例。

注意

Console 不支持完整的 JQ 语言。如果表达式使用了不支持的语法,Console 会显示 Invalid JQ expression 并使 Apply 不可用。

Console 将表达式视为 JavaScript 正则表达式模式,并将其独立应用于每个响应行。输入模式时不要包含 / 分隔符或标记。例如

  • 匹配包含 greenyellow 的行:green|yellow
  • 匹配缩进后第一个 JSON 字段为 count 的行:^\s*"count"

由于正则表达式是逐行过滤渲染后的响应,因此过滤后的输出可能是一个片段而不是有效的 JSON。

你可以导出请求

  • 导出到 TXT 文件,通过使用 Export requests 按钮。使用此方法时,输入面板的所有内容都会被复制,包括注释、请求和有效负载。所有的格式都得以保留,使你能够在以后或在不同的环境中使用 Import requests 按钮重新导入该文件。

    提示

    导入包含 Console 请求的 TXT 文件时,输入面板的当前内容将被替换。如果你不想丢失它,请先将其导出;如果你已经运行过这些请求,则可以在 History 选项卡中找到它。

  • 通过将它们分别复制为 curlJavaScriptPython。为此,请选中一个请求,然后打开上下文菜单并选择 Copy as。执行此操作时,请求将逐个复制到你的剪贴板。你可以保存你常用的语言,以便下次使用时加快复制操作。

    从外部环境运行复制的请求时,你需要向请求中添加认证信息

Console 会维护你尝试执行的最后 500 个请求的列表。要查看它们,请打开 History 选项卡。

你可以通过选中历史记录中的请求并点击 Add and run 来再次运行该请求。如果你只想将其添回 Console 输入面板而暂不运行,请改为点击 Add。它将被添加到编辑器当前光标所在的位置。

转到 ConsoleConfig 选项卡来自定义其显示、自动补全和无障碍设置。

如果你不想使用 Console,可以通过在 kibana.yml 配置文件中将 console.ui.enabled 设置为 false 来禁用它。更改此设置会导致服务器在下次启动时重新生成资产,这可能会导致页面开始提供服务之前出现延迟。

你还可以选择仅禁用显示在多个 Kibana 页面页脚中的持久化控制台。为此,请转到 Stack Management > Advanced Settings,并关闭 devTools:enablePersistentConsole 设置。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.