中国建设银行最新消息,seo课程培训班费用,西安在线最新招聘信息,eclipse做网站表格前言 以下Elasticsearch版本#xff1a;7.9.3 ES自带的X-Pack密码验证#xff1a;
X-Pack是elasticsearch的一个扩展包#xff0c;将安全#xff0c;警告#xff0c;监视#xff0c;图形和报告功能捆绑在一个易于安装的软件包中#xff0c;所以我们想要开启账号密码验证…前言 以下Elasticsearch版本7.9.3 ES自带的X-Pack密码验证
X-Pack是elasticsearch的一个扩展包将安全警告监视图形和报告功能捆绑在一个易于安装的软件包中所以我们想要开启账号密码验证就需要开启X-Pack密码校验。5.X版本之前Elasticsearch没有自带X-PackX-Pack的各个功能如安全、警报、监视、图形和报告是独立的单元。5.X版本Elasticsearch对原本的安全、警报、监视、图形和报告等功能做了一个封装形成了X-Pack但X-Pack仍需要额外安装。6.3版本及之后X-Pack已经集成在一起发布无需额外安装。不过基础安全功能在付费黄金版中才可用。6.8及以上版本默认带上了X-Pack认证插件且免费。7.0版本默认情况下当安装Elasticsearch时会安装X-Pack无需单独再安装。
Elasticsearch的X-Pack 详细简介点我查看
一、修改ES配置文件
在ES配置文件config 文件夹elasticsearch.yml 添加如下配置
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true若想关闭x-pack密码验证如下操作
xpack.security.enabled: false二、重新启动ES
找到ES路径 bin 下面 双击 elasticsearch.bat 重新启动后以上配置才生效 启动完成
三通过命令设置ES密码
通过管理员打开cmd窗口切换到ES文件夹 bin 路径下面 执行以下命令
elasticsearch-setup-passwords interactive 1、出现以下情况输入y 2、可以开始设置密码了一次性需要设置多个密码密码尽量保证一致 其中用户权限分别如下
elastic 账号拥有 superuser 角色是内置的超级用户kibana 账号拥有 kibana_system 角色用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。logstash_system 账号拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。
密码设置完成后重新启动ES
四访问ES 验证是否成功
访问 127.0.0.1:9200 ES用户名elastic
passWord: 刚才设置的密码密码设置成功
五kibana 配置ES
1、修改kibana 配置文件 kibana.yml 添加如下配置
elasticsearch.hosts: [http://127.0.0.1:9200]
elasticsearch.username: elastic
elasticsearch.password: zxcv9527 2、执行 bin下面的 kibana.bat 启动 3、浏览器访问 127.0.0.1:5601 输入账号和密码
备注注意网站登录的账号和密码是ES
kibana 账号elastic
passWord: zxcv9527六Spring Boot 配置ES
1、yml文件配置
在配置 Spring Data Elasticsearch 以使用带有身份验证的 Elasticsearch 客户端时你需要确保配置文件中包含了正确的连接信息和认证细节。基于你提供的信息你的 Elasticsearch 实例位于 127.0.0.1:9200账号为 elastic密码为 zxcv9527。
对于 Spring Boot 应用你可以在 application.yml 或 application.properties 文件中设置这些配置。以下是如何在 application.yml 文件中配置这些信息的示例
spring: data: elasticsearch: client: reactive: endpoints: 127.0.0.1:9200 username: elastic password: zxcv9527或者如果你使用的是 application.properties 文件配置是这样的
spring.data.elasticsearch.client.reactive.endpoints127.0.0.1:9200
spring.data.elasticsearch.client.reactive.usernameelastic
spring.data.elasticsearch.client.reactive.passwordzxcv9527这些配置设置将确保 Spring Data Elasticsearch 使用提供的用户名和密码连接到指定的 Elasticsearch 端点。
2、java 代码配置类
只是一个简单的配置类主要是连接测试参考使用
import com.lingxu.plus.es.utils.ElasticSearchUtil;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Author ajie** since 20241014*/
Configuration
public class ElasticSearchClientConfig {Value(${spring.data.elasticsearch.client.reactive.endpoints})private String endpoints;Value(${spring.data.elasticsearch.client.reactive.username})private String userName;Value(${spring.data.elasticsearch.client.reactive.password})private String password;Bean // 标记这个方法生成的对象是一个Spring管理的Beanpublic RestHighLevelClient restHighLevelClient() {// 将端点字符串分割成数组String[] points endpoints.split(,);// 创建一个与端点数组长度相同的HttpHost数组HttpHost[] httpHosts new HttpHost[points.length];// 遍历端点数组创建HttpHost对象并填充到数组中for (int i 0; i points.length; i) {String point points[i];String[] hostPort point.split(:);httpHosts[i] new HttpHost(hostPort[0], Integer.parseInt(hostPort[1]), http);}// 创建一个凭证提供者用于存储用户名和密码CredentialsProvider credentialsProvider new BasicCredentialsProvider();// 设置凭证提供者的认证范围这里设置为ANY表示对所有主机都使用这些凭证// 并使用用户名和密码创建基本认证凭据credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));// 自定义RestClientBuilder以便在创建HTTP客户端时使用凭证提供者RestClientBuilder builder RestClient.builder(httpHosts).setHttpClientConfigCallback(httpClientBuilder - {// 在HTTP客户端构建器中设置凭证提供者return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);// 这里可以根据需要添加其他配置比如SSL设置等});// 使用自定义的构建器创建RestHighLevelClient对象RestHighLevelClient client new RestHighLevelClient(builder);// 返回创建的RestHighLevelClient对象return client;}Beanpublic ElasticSearchUtil elasticSearchUtil() {return new ElasticSearchUtil();}
}
3、注意事项
版本兼容性检查你使用的 Spring Data Elasticsearch 版本与你的 Elasticsearch 服务器版本是否兼容。依赖关系确保你的项目中包含了 Spring Data Elasticsearch 的依赖。对于使用 Spring Boot 的项目你可以添加类似以下的依赖到你的 pom.xml如果你使用 Maven
dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-elasticsearch-reactive/artifactId
/dependency安全性确保你的密码和其他敏感信息不会硬编码在源代码或配置文件中特别是在生产环境中。考虑使用环境变量或外部配置服务来管理敏感信息。连接测试在应用启动后测试连接是否成功可以通过查看日志或使用一些简单的查询来验证。 这样配置后你的 Spring 应用应该能够成功连接到需要身份验证的 Elasticsearch 实例。
七修改密码
命令中elastic是要修改密码的用户名。执行完命令后输入新密码即可完成密码修改
bin/elasticsearch-users passwd elastic服务器修改、rest api 语法示例
curl -H Content-Type:application/json -XPOST -u elastic http://192.168.157.132:9200/_xpack/security/user/用户名/_password -d { password : 修改后的密码 }修改 elastic 示例
curl -H Content-Type:application/json -XPOST -u elastic http://127.0.0.1:9200/_xpack/security/user/elastic/_password -d { password : zxcv9527 }忘记密码处理
修改elasticsearch.yml 配置将身份验证相关配置屏蔽掉重启ES,查看下索引,发现多了一个.security-7索引将其删除到此就回到ES没有设置密码的阶段了如果想重新设置密码请重新开始
备注ES 整体路径不要存在中文名称和特殊符号空格、等防止出现一些其他问题。