Creating and Managing Users in Elasticsearch

This article dives into creating and managing users in Elasticsearch, focusing on the built-in functionality provided by the security features.

Introduction

Elasticsearch, a robust and flexible search and analytics engine, provides a comprehensive security model for managing users. This article will delve into creating and managing users in Elasticsearch, focusing on the built-in functionality provided by the security features.

Understanding Elasticsearch User Management

Elasticsearch’s security features allow you to easily manage users and their roles. Users in Elasticsearch are entities that can authenticate (to ensure that they are who they say they are) and are authorized (have the needed permissions to perform certain actions). The process of creating a user involves defining the user’s credentials and assigning appropriate roles.

Creating a User in Elasticsearch

Creating a user in Elasticsearch involves using the Elasticsearch create user API. Here is a step-by-step guide on how to create a user:

  1. Access the Elasticsearch API: You can access the Elasticsearch API through the command line using a tool like curl or through Kibana Dev Tools.
  2. Use the Create User API: The Create User API is a POST request to the _security/user/<username> endpoint. Replace <username> with the desired username.
  3. Define User Credentials: In the body of the POST request, define the user’s credentials. This includes the password field and optionally the roles field. The roles field defines what actions the user can perform in Elasticsearch.

Here is an example of a Create User API request:

POST _security/user/jdoe
{
 "password" : "jdoe_password",
 "roles" : [ "admin", "other_role1" ],
 "full_name" : "John Doe",
 "email" : "john.doe@example.com",
 "metadata" : {
   "intelligence" : 7
 },
 "enabled": true
}

In this example, a user named jdoe is created with the password jdoe_password. The user is assigned two roles, admin and other_role1 (the assigned roles must exist before creating the user), and additional information is provided in the full_name, email, and metadata fields.

Managing Users in Elasticsearch

Once a user is created, you can manage the user through the Elasticsearch API. This includes changing a user’s password, updating a user’s roles, and disabling a user.

To change a user’s password, use the Change Password API. This is a PUT request to the _security/user/<username>/_password endpoint. In the body of the request, provide the new password as shown below:

POST /_security/user/jdoe/_password
{
 "password" : "new_jdoe_password"
}

To update a user’s roles, use the Update User API. This is a PUT request to the _security/user/<username> endpoint. In the body of the request, provide the updated roles as shown below:

PUT /_security/user/jdoe
{
 "roles" : [ "admin", "other_role1", "other_role2" ]
}

To disable a user, use the Disable User API as shown below:

PUT /_security/user/jdoe/_disable

Finally, the re-enable a disabled user, use the Enable User API:

PUT /_security/user/jdoe/_enable

Conclusion

In conclusion, Elasticsearch provides a comprehensive and flexible user management system. By understanding how to create and manage users, you can effectively control who has access to your Elasticsearch data and what actions they can perform.

Ready to try this out on your own? Start a free trial.

Want to get Elastic certified? Find out when the next Elasticsearch Engineer training is running!

Related content

How to deploy Elasticsearch on an Azure Virtual Machine

October 20, 2025

How to deploy Elasticsearch on an Azure Virtual Machine

Learn how to deploy Elasticsearch on Azure VM with Kibana for full control over your Elasticsearch setup configuration.

How to use the Synonyms UI to upload and manage Elasticsearch synonyms

October 14, 2025

How to use the Synonyms UI to upload and manage Elasticsearch synonyms

Learn how to use the Synonyms UI in Kibana to create synonym sets and assign them to indices.

How to reduce the number of shards in an Elasticsearch Cluster

October 8, 2025

How to reduce the number of shards in an Elasticsearch Cluster

Learn how Elasticsearch shards affect cluster performance in this comprehensive guide, including how to get the shard count, change it from default, and reduce it if needed.

How to deploy Elasticsearch on AWS Marketplace

October 3, 2025

How to deploy Elasticsearch on AWS Marketplace

Learn how to set up and run Elasticsearch using Elastic Cloud Service on AWS Marketplace in this step-by-step guide.

HNSW graph: How to improve Elasticsearch performance

September 29, 2025

HNSW graph: How to improve Elasticsearch performance

Learn how to use the HNSW graph M and ef_construction parameters to improve search performance.

Ready to build state of the art search experiences?

Sufficiently advanced search isn’t achieved with the efforts of one. Elasticsearch is powered by data scientists, ML ops, engineers, and many more who are just as passionate about search as your are. Let’s connect and work together to build the magical search experience that will get you the results you want.

Try it yourself