Elaticsearch分类传送门
两种连接方式
Transport Client:
这是ElaticseEarch5之前大部分使用方式连接集群
Rest-High-Level-Client:
官网指出在Elasticsearch6以后推荐使用高阶API进行连接,并且Transport在es7会慢慢舍弃,在es8中完全舍弃。但是Rest-High-Level-Client的API功能不够齐全,在完善中
直接上代码,并都有使用java连接elasticsearch账号密码验证
Transport Client:
public static TransportClient init() throws UnknownHostException {
Settings settings = Settings.builder()
.put("xpack.security.user", "xxx:xxxx")
.put("cluster.name", "utan-es")
.build();
//new TransportAddress -> es6连接方式
//new InetSocketAddress -> es5连接方式
client = new PreBuiltXPackTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(ES_HOST), ES_PORT));
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(ES_USERNAME, ES_PASSWORD));
return client;
}
Rest-High-Level-Client:
static {
org.elasticsearch.client.RequestOptions.Builder builder = org.elasticsearch.client.RequestOptions.DEFAULT.toBuilder();
// 默认缓存限制为100MB,此处修改为30MB
builder.setHttpAsyncResponseConsumerFactory(
new HttpAsyncResponseConsumerFactory
.HeapBufferedResponseConsumerFactory(30 * 1024 * 1024));
COMMON_OPTIONS = builder.build();
}
public static RestHighLevelClient restHighLevelClient() {
// RestHighLevelClient实例通过REST low-level client builder进行构造。
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//访问用户名和密码为您创建阿里云Elasticsearch实例时设置的用户名和密码,也是Kibana控制台的登录用户名和密码。
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(ES_USERNAME, ES_PASSWORD));
System.out.println("ES账号: " + ES_USERNAME);
// 通过builder创建rest client,配置http client的HttpClientConfigCallback
RestClientBuilder builder = RestClient.builder(new HttpHost(ES_HOST, ES_PORT))
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
RestHighLevelClient highClient = new RestHighLevelClient(builder);
return highClient;
}
下文继续介绍两种连接方式后的更新/删除操作,喜欢的就关注下吧
点滴积累,写作不易,如果有用就点个关注吧
您的点赞关注,是我长期写作的动力!!