Elasticsearch 中误操作删除了所有用户解决办法

本文介绍了在Elasticsearch中误删除所有用户后,如何通过开启x-pack验证、修改配置文件、设置新密码以及使用curl命令重置特定用户密码的详细步骤,特别提醒不要随意删除security索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果在 Elasticsearch 中误操作删除了所有用户,可以通过以下步骤重新创建用户和密码:

  1. 在配置文件中开启 x-pack 验证,修改config(一般是在/usr/share/elasticsearch)目录下面的elasticsearch.yml文件,添加以下内容并重启:
    xpack.security.enabled: true
    xpack.license.self_generated.type: basic
    xpack.security.transport.ssl.enabled: true
    
  2. 执行设置用户名和密码的命令,需要为4个用户分别设置密码,包括elastickibanalogstash_systembeats_system
    bin/elasticsearch-setup-passwords interactive
    initiating the setup of passwords for reserved users elastic,kibana,logstash_system,beats_system.
    You will be prompted to enter passwords as the process progresses.
    Please confirm that you would like to continue (y/N)y
    Enter password for (elastic):
    Reenter password for (elastic):
    Passwords do not match. Try again.
    Enter password for (elastic):
    Reenter password for (elastic):
    Enter password for (kibana):
    Reenter password for (kibana):
    Enter password for (logstash_system):
    Reenter password for (logstash_system):
    Enter password for (beats_system):
    Reenter password for (beats_system):
    Changed password for user (kibana)
    Changed password for user (logstash_system)
    Changed password for user (beats_system)
    Changed password for user (elastic)
    
  3. 后续需要修改密码,命令如下:
    curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
    

备注:请谨慎删除security索引,这个是系统用户密码保存的索引。

### Elasticsearch 中 `index_not_found_exception` 错误的解决方案 在使用 Elasticsearch 进行查询操作时,如果目标索引未找到,则会抛出 `index_not_found_exception` 异常。这种异常通常发生在尝试访问一个尚未创建或者已被删除的索引时[^1]。 #### 原因分析 此错误的根本原因是请求的目标索引(在此案例中为 `albuminfo`)不存在于集群中。可能的原因包括但不限于以下几种情况: - 索引从未被显式创建。 - 索引已经被手动或通过自动清理策略删除。 - 请求中的索引名称拼写有误。 #### 解决方案 以下是针对该问题的一些常见解决办法: 1. **验证索引是否存在** 可以先检查指定的索引是否存在于当前的 Elasticsearch 集群中。这可以通过发送 HTTP GET 请求到 `_cat/indices?v` 或者直接向 `/albuminfo` 发起 HEAD 请求来完成。 ```bash curl -XHEAD http://localhost:9200/albuminfo ``` 如果返回状态码为 404,则表明索引确实不存在[^2]。 2. **动态创建缺失的索引** 当发现索引不存在时,在执行查询之前可以考虑主动创建所需的索引。例如,下面是一个简单的命令用于创建名为 `albuminfo` 的新索引,并设置一些基本配置参数。 ```json PUT /albuminfo { "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "properties": { "title": { "type": "text" }, "artist": { "type": "keyword" } } } } ``` 3. **捕获并处理异常** 对于应用程序层面而言,应该设计合理的逻辑去捕捉此类异常,并采取相应的措施。比如 Java 客户端代码片段如下所示: ```java try { SearchResponse response = client.search(new SearchRequest("albuminfo"), RequestOptions.DEFAULT); } catch (IndexNotFoundException e) { System.out.println("The specified index does not exist."); createAlbumInfoIndex(client); // 自定义函数实现索引创建功能 } ``` 4. **优化应用架构减少依赖特定索引的风险** 考虑采用更灵活的数据管理方式,如利用别名机制指向实际存储数据的一个或多个物理索引。这样即使底层具体索引发生变化也不会影响前端业务调用的一致性和稳定性[^3]。 #### 总结 综上所述,面对 `index_not_found_exception` 类型的问题可以从确认索引存在与否入手,必要时重新构建丢失的对象;同时也要注意改进程序结构提高容错能力以及用户体验满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值