龙空技术网

没想到elasticsearch-6.3.0或以上也可以无插件实现设置账号密码

hryc 103

前言:

而今各位老铁们对“java设置账号密码”大致比较重视,大家都想要剖析一些“java设置账号密码”的相关内容。那么小编同时在网络上网罗了一些有关“java设置账号密码””的相关文章,希望我们能喜欢,你们快快来了解一下吧!

前言

elasticsearch6.3.1安装包中已经集成了x-pack插件,无需使用elasticsearch-plugin install来安装x-pack,我们需要做的是使x-pack工作

1.通过请求开启trial license

curl -H "Content-Type:application/json" -XPOST  

可以看到shell控制台显示type已变为trial

2.在es安装目录elasticsearch.yml配置文件下增加配置

xpack.security.enabled: truexpack.license.self_generated.type: basicxpack.security.transport.ssl.enabled: true

3.重启你的es,记得linux要切换成启动账号(非root账号)

4.重启后设置密码

在es安装目录bin目录下找到elasticsearch-setup-passwords,执行

./elasticsearch-setup-passwords interactive

5.再访问就会出现要输入账号密码:

elastic,kibana,logstash_system,beats_system这些是账号,密码就是自己设置的。

6.搭建完成后,那么问题来了,java客户端该如何接入

其实很简单,找到你的连接ES的工具类。在创建连接的前面放入账号密码

连接好的client存在内存中,减少不必要的生成client对象,单列如下:

/每次都取client太耗时,大约需要2秒左右,所以只取一次,放在内存中,不关闭,一直用	private static RestHighLevelClient client  = null;		public static RestHighLevelClient getClient() {		try {			if(client != null){				return client;			}			synchronized (EsUtil.class) {				if(client != null){					return client;				}				long t = new Date().getTime();								/** 用户认证对象 */				final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();				/** 设置账号密码 */				credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "123456"));				/** 创建rest client对象 */				RestClientBuilder builder = RestClient.builder(new HttpHost("127.0.0.1", 9200))						.setHttpClientConfigCallback(new HttpClientConfigCallback() {							@Override							public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {								return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);							}						});				client = new RestHighLevelClient(builder);				long t1 = new Date().getTime();				System.out.println("获得连接,耗时:"+(t1-t)+"s");				return client;			}					} catch (Exception e) {			e.printStackTrace();		}		return null;	}

标签: #java设置账号密码