更新许可证 API

编辑

更新您的 Elasticsearch 集群的许可证。

请求

编辑

PUT _license

POST _license

先决条件

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

描述

编辑

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

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

查询参数

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

请求体

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

示例

编辑

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

resp = client.license.post(
    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"
        }
    ],
)
print(resp)
const response = await client.license.post({
  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",
    },
  ],
});
console.log(response);
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,则必须使用 https:// 启动您的 URL

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

  {
  "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。例如

resp = client.license.post(
    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"
        }
    ],
)
print(resp)
const response = await client.license.post({
  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",
    },
  ],
});
console.log(response);
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

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