环境:es7.9版本、maven、eclipse
-
elasticsearch 9200、9300的区别
a. 9200是http协议的RESTful 接口 【RestHighLevelClient】
b. 9300是tcp协议,es集群之间通过9300通讯【TransportClient】
- es升级迭代逐渐将9300淘汰 -
9300连接代码
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.2.0</version>
</dependency>
package com.es;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
public class ES7_9300 {
public static void main(String[] args) {
getES9300Client();
}
private static Client getES9300Client() {
Settings settings = Settings.builder().put("cluster.name", "Test-ES7.9").build();
// 这里可以同时连接集群的服务器,可以多个,并且连接服务是可访问的
TransportClient client = null;
try {
// 创建client
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.110"), 9300));
} catch (UnknownHostException e) {
e.printStackTrace();
} finally {
if (client != null) {
System.out.println("连接成功!");
}
}
return client;
}
}
- 9200连接代码:带密码方式
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.2.0</version>
</dependency>
package com.es.util;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
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.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
public class ESClient {
static final Logger logger = LogManager.getLogger("ESClient");
public static RestHighLevelClient client = null;
public static RestHighLevelClient getES7Client() {
if (client != null) {
return client;
}
logger.info("开始初始化Elastic Search客户端");
// 从配置文件获取ES配置信息
String hosts = "192.168.35.1,9200,http;192.168.35.2,9200,http;192.168.35.3,9200,http";
logger.info("ES:" + hosts);
if (hosts == null || hosts.length() == 0) {
logger.error(MessageFormat.format("获取ES配置信息出错{0}", "secondaryindex.es.client.hosts"));
return null;
}
List<String> clients = StringUtil.split(hosts, ";");
List<HttpHost> httpHosts = new ArrayList<HttpHost>();
for (String client : clients) {
logger.info("\t> " + client);
httpHosts.add(new HttpHost(client.substring(0, client.indexOf(",")),
StringUtil.parseInt(client.substring(client.indexOf(",") + 1, client.lastIndexOf(","))),
client.substring(client.lastIndexOf(",") + 1)));
}
String userName = "userName";
String password = "password";
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
RestClientBuilder builder = RestClient.builder(httpHosts.toArray(new HttpHost[httpHosts.size()]));
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
client = new RestHighLevelClient(builder);
System.out.println(hosts);
System.out.println("------连接es成功!!!------");
return client;
}
public static void close() {
if (client != null) {
try {
client.close();
client = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- 9200 连接代码:不带密码
package com.es.util;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.impl.nio.reactor.IOReactorConfig;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
public class ES7Client {
public static RestHighLevelClient getClient() {
// Client
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("192.168.1.119", 9200))
.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
return requestConfigBuilder.setConnectTimeout(5000) // 连接超时(默认为1秒)
.setSocketTimeout(60000);// 套接字超时(默认为30秒)
}
}).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder
.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build());// 线程数
}
});
RestHighLevelClient client = new RestHighLevelClient(restClientBuilder);
return client;
}
}