更新许可证 API编辑

更新 Elasticsearch 集群的许可证。

请求编辑

PUT _license

POST _license

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,则需要 manage 集群权限 才能安装许可证。
  • 如果启用了 Elasticsearch 安全功能并且您要安装黄金级或更高级别的许可证,则必须在安装许可证之前在传输网络层上启用 TLS。请参阅 使用 TLS 加密节点间通信
  • 如果启用了 操作员权限 功能,则只有操作员用户可以使用此 API。

描述编辑

您可以在运行时更新许可证,而无需关闭节点。许可证更新会立即生效。但是,如果您要安装的许可证不支持先前许可证提供的所有功能,则会在响应中收到通知。然后,您必须重新提交 API 请求,并将 acknowledge 参数设置为 true

有关不同类型许可证的更多信息,请参阅 https://elastic.ac.cn/subscriptions

查询参数编辑

acknowledge
(可选,布尔值)指定您是否确认许可证更改。默认值为 false

请求正文编辑

licenses
(必填,数组)包含许可证信息的一个或多个 JSON 文档的序列。

示例编辑

以下示例更新为基本许可证

PUT _license
{
  "licenses": [
    {
      "uid":"893361dc-9749-4997-93cb-802e3d7fa4xx",
      "type":"basic",
      "issue_date_in_millis":1411948800000,
      "expiry_date_in_millis":1914278399999,
      "max_nodes":1,
      "issued_to":"issuedTo",
      "issuer":"issuer",
      "signature":"xx"
    }
    ]
}

这些值无效;您必须从许可证文件中替换适当的内容。

您还可以使用 curl 命令安装许可证文件。请确保在许可证文件路径前添加 @,以指示 curl 将其视为输入文件。

curl -XPUT -u <user> 'http://<host>:<port>/_license' -H "Content-Type: application/json" -d @license.json

在 Windows 上,使用以下命令

Invoke-WebRequest -uri http://<host>:<port>/_license -Credential elastic -Method Put -ContentType "application/json" -InFile .\license.json

在这些示例中,

  • <user> 是具有相应权限的用户 ID。
  • <host> 是 Elasticsearch 集群中任何节点的主机名(如果在本地执行,则为 localhost
  • <port> 是 http 端口(默认为 9200
  • license.json 是许可证 JSON 文件

如果您的 Elasticsearch 节点在 HTTP 接口上启用了 SSL,则必须在 URL 前面加上 https://

如果您之前的许可证具有比基本许可证更多的功能,则会收到以下响应

  {
  "acknowledged": false,
  "license_status": "valid",
  "acknowledge": {
    "message": """This license update requires acknowledgement. To acknowledge the license, please read the following messages and update the license again, this time with the "acknowledge=true" parameter:""",
    "watcher": [
      "Watcher will be disabled"
    ],
    "logstash": [
      "Logstash will no longer poll for centrally-managed pipelines"
    ],
    "security": [
      "The following X-Pack security functionality will be disabled: ..." ]
    }
}

要完成更新,您必须重新提交 API 请求并将 acknowledge 参数设置为 true。例如

PUT _license?acknowledge=true
{
  "licenses": [
    {
      "uid":"893361dc-9749-4997-93cb-802e3d7fa4xx",
      "type":"basic",
      "issue_date_in_millis":1411948800000,
      "expiry_date_in_millis":1914278399999,
      "max_nodes":1,
      "issued_to":"issuedTo",
      "issuer":"issuer",
      "signature":"xx"
    }
    ]
}

或者

curl -XPUT -u elastic 'http://<host>:<port>/_license?acknowledge=true' -H "Content-Type: application/json" -d @license.json

有关许可证过期后禁用的功能的更多信息,请参阅 许可证过期