Update license API

edit

Updates the license for your Elasticsearch cluster.

Request

edit

PUT _license

POST _license

Prerequisites

edit

Description

edit

You can update your license at runtime without shutting down your nodes. License updates take effect immediately. If the license you are installing does not support all of the features that were available with your previous license, however, you are notified in the response. You must then re-submit the API request with the acknowledge parameter set to true.

For more information about the different types of licenses, see https://elastic.ac.cn/subscriptions.

Query parameters

edit
acknowledge
(Optional, Boolean) Specifies whether you acknowledge the license changes. The default value is false.

Request body

edit
licenses
(Required, array) A sequence of one or more JSON documents containing the license information.

Examples

edit

The following example updates to a basic license:

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"
    }
    ]
}

These values are invalid; you must substitute the appropriate content from your license file.

You can also install your license file using a curl command. Be sure to add @ before the license file path to instruct curl to treat it as an input file.

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

On Windows, use the following command:

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

In these examples,

  • <user> is a user ID with the appropriate authority.
  • <host> is the hostname of any node in the Elasticsearch cluster (localhost if executing locally)
  • <port> is the http port (defaults to 9200)
  • license.json is the license JSON file

If your Elasticsearch node has SSL enabled on the HTTP interface, you must start your URL with https://

If you previously had a license with more features than the basic license, you receive the following response:

  {
  "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: ..." ]
    }
}

To complete the update, you must re-submit the API request and set the acknowledge parameter to true. For example:

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"
    }
    ]
}

Alternatively:

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

For more information about the features that are disabled when your license expires, see License expiration.