批量解析对象 API编辑

在 8.7.0 中已弃用。

将在即将发布的版本中删除

通过 ID 检索多个 Kibana 保存对象,使用任何存在的旧 URL 别名。

在某些情况下,当 Kibana 升级时,保存对象迁移可能需要重新生成一些对象 ID 以启用新功能。当对象的 ID 重新生成时,会为该对象创建旧 URL 别名,以保留其旧 ID。在这种情况下,可以使用其新 ID 或旧 ID 通过批量解析 API 检索该对象。

有关最新 API 详细信息,请参阅 开放 API 规范

请求编辑

POST <kibana 主机>:<端口>/api/saved_objects/_bulk_resolve

POST <kibana 主机>:<端口>/s/<空间 ID>/api/saved_objects/_bulk_resolve

路径参数编辑

space_id
(可选,字符串) 空间的标识符。如果 URL 中未提供 space_id,则使用默认空间。

请求正文编辑

type
(必需,字符串) 有效选项包括 visualizationdashboardsearchindex-patternconfig
id
(必需,字符串) 检索对象的 ID。ID 包括 Kibana 唯一标识符或自定义标识符。

响应正文编辑

resolved_objects
(数组) 包含表示每个请求对象的响应的对象的顶级属性。响应中对象的顺序与请求中对象的顺序相同。

Kibana 无法找到的保存对象将被替换为错误对象和“exactMatch”结果。结果背后的原因是“exactMatch”是默认结果,并且结果仅在找到别名时才会更改。此行为是 _bulk_resolve 独有的;常规 resolve API 将仅返回 HTTP 错误。

响应代码编辑

200
表示成功调用。请注意,此 HTTP 响应代码表示批量操作成功。与单个对象相关的错误将在响应正文中返回。有关详细信息,请参见下面的示例。

示例编辑

使用 my-pattern ID 检索索引模式,以及使用 my-dashboard ID 检索仪表板

$ curl -X POST api/saved_objects/_bulk_resolve
[
  {
    "type": "index-pattern",
    "id": "my-pattern"
  },
  {
    "type": "dashboard",
    "id": "be3733a0-9efe-11e7-acb3-3dab96693fab"
  }
]

API 返回以下内容

{
  "resolved_objects": [
    {
      "saved_object": {
        "id": "my-pattern",
        "type": "index-pattern",
        "version": 1,
        "attributes": {
          "title": "my-pattern-*"
        }
      },
      "outcome": "exactMatch"
    },
    {
      "saved_object": {
        "id": "my-dashboard",
        "type": "dashboard",
        "error": {
          "statusCode": 404,
          "message": "Not found"
        }
      },
      "outcome": "exactMatch"
    }
  ]
}

只有索引模式存在,仪表板未找到。

除了 saved_object 之外,还可以返回多个字段

  • outcome (必需字符串) — 以下值之一

    • "exactMatch" — 一个文档完全匹配给定的 ID。
    • "aliasMatch" — 一个具有旧 URL 别名的文档匹配给定的 ID;在这种情况下,saved_object.id 字段与给定的 ID 不同。
    • "conflict" — 两个文档匹配给定的 ID,一个是完全匹配,另一个具有旧 URL 别名;在这种情况下,saved_object 对象是完全匹配,并且 saved_object.id 字段与给定的 ID 相同。
  • alias_target_id (可选字符串) — 如果 outcome"aliasMatch""conflict",则响应还将包含 alias_target_id 字段。这意味着为另一个对象找到了别名,并且它描述了该对象的 ID。
  • alias_purpose (可选字符串) — 如果 outcome"aliasMatch""conflict",则响应还将包含 alias_purpose 字段。这指示创建别名的原因,并且可用于相应地更改客户端行为。以下值之一:"savedObjectConversion""savedObjectImport"

客户端代码使用这些字段根据 outcome 进行不同的行为 — 了解更多

通过 ID 在 testspace 中检索仪表板对象

$ curl -X GET s/testspace/api/saved_objects/resolve/dashboard/7adfa750-4c81-11e8-b3d7-01146121b73d

API 返回以下内容

{
  "resolved_objects": [
    {
      "saved_object": {
        "id": "7adfa750-4c81-11e8-b3d7-01146121b73d",
        "type": "dashboard",
        "updated_at": "2019-07-23T00:11:07.059Z",
        "version": "WzQ0LDFd",
        "attributes": {
          "title": "[Flights] Global Flight Dashboard",
          "hits": 0,
          "description": "Analyze mock flight data for ES-Air, Logstash Airways, Kibana Airlines and JetBeats",
          "panelsJSON": "[ . . . ]",
          "optionsJSON": "{\"hidePanelTitles\":false,\"useMargins\":true}",
          "version": 1,
          "timeRestore": true,
          "timeTo": "now",
          "timeFrom": "now-24h",
          "refreshInterval": {
            "display": "15 minutes",
            "pause": false,
            "section": 2,
            "value": 900000
          },
          "kibanaSavedObjectMeta": {
            "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}"
          }
        },
        "references": [
          {
            "name": "panel_0",
            "type": "visualization",
            "id": "aeb212e0-4c84-11e8-b3d7-01146121b73d"
          },
          . . .
          {
            "name": "panel_18",
            "type": "visualization",
            "id": "ed78a660-53a0-11e8-acbd-0be0ad9d822b"
          }
        ],
        "migrationVersion": {
          "dashboard": "7.0.0"
        }
      },
      "outcome": "conflict",
      "alias_target_id": "05becb88-e214-439a-a2ac-15fc783b5d01"
    }
  ]
}