批量创建保存对象 API

编辑

批量创建保存对象 API编辑

在 8.7.0 中已弃用。

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

创建多个 Kibana 保存对象。

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

请求编辑

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

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

路径参数编辑

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

查询参数编辑

overwrite
(可选,布尔值) 当 true 时,将覆盖具有相同 ID 的文档。

请求主体编辑

type
(必需,字符串) 有效选项包括 visualizationdashboardsearchindex-pattern
id
(可选,字符串) 指定 ID,而不是使用随机生成的 ID。
attributes
(必需,对象) 您要创建的数据。
references
(可选,数组) 具有 nameidtype 属性的对象,描述引用对象中的其他保存对象。要引用其他保存对象,请在属性中使用 name。切勿使用 id 来引用其他保存对象。 id 可以在迁移、导入或导出期间自动更新。
initialNamespaces

(可选,字符串数组) 此对象创建所在的 空间 的标识符。如果提供此选项,则仅在显式定义的空间中创建对象。如果未提供此选项,则在当前空间中创建对象(默认行为)。

  • 对于可共享对象类型(使用 namespaceType: 'multiple' 注册):此选项可用于指定一个或多个空间,包括“所有空间”标识符 ('*')。
  • 对于隔离对象类型(使用 namespaceType: 'single'namespaceType: 'multiple-isolated' 注册):此选项只能用于指定单个空间,并且不允许使用“所有空间”标识符 ('*')。
  • 对于全局对象类型(使用 namespaceType: 'agnostic' 注册):不能使用此选项。
version
(可选,数字) 指定版本。

响应主体编辑

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

无法持久化的保存对象将被错误对象替换。

响应代码编辑

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

示例编辑

使用 my-pattern ID 创建数据视图,并使用 my-dashboard ID 创建仪表板

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

API 返回以下内容

{
  "saved_objects": [
    {
      "id": "my-pattern",
      "type": "index-pattern",
      "version": 1,
      "attributes": {
        "title": "my-pattern-*"
      }
    },
    {
      "id": "be3733a0-9efe-11e7-acb3-3dab96693fab",
      "type": "dashboard",
      "error": {
        "statusCode": 409,
        "message": "Saved object [dashboard/be3733a0-9efe-11e7-acb3-3dab96693fab] conflict"
      }
    }
  ]
}

已经存在一个具有 my-dashboard ID 的保存对象,因此只创建了数据视图。

冲突错误编辑

从 Kibana 8.0 开始,保存对象可以存在于多个空间中。因此,在尝试创建对象时,您可能会遇到不同类型的冲突错误

  • 常规冲突: 这是一个没有元数据的 409 错误。这意味着该类型/ID 的对象已存在。这可以通过使用 overwrite: true 选项来覆盖。
  • 无法解决的冲突: 这是一个在元数据中具有 isNotOverwritable: true 的 409 错误。这意味着该类型/ID 的对象已存在于不同的空间中,并且无法使用给定的参数覆盖它。要成功覆盖此对象,您必须至少在一个它存在于其中的空间中执行此操作。您可以使用 space_id 路径参数 *或* initialNamespaces 参数来指定它。
  • 别名冲突: 这是一个在元数据中具有 spacesWithConflictingAliases 字符串数组的 409 错误。这意味着此类型/ID 的冲突 旧版 URL 别名 存在于您尝试创建此对象的 space(s) 中。冲突的旧版 URL 别名是指向不同类型/ID 的别名。要成功创建此对象,您需要首先使用 _disable_legacy_url_aliases API 来禁用有问题的旧版 URL 别名。