方式一:使用TransportClient方式:
public ESConfiguration()
{
if(EnvUtils.isOnlineEnv())
{
hostName = "xxxxx1";
hostName2 = "xxxx2";
hostName3 = "xxxx3";
port = "9300";
clusterName = "yyyy";
}else {
hostName = "vvvvv1";
hostName2 = "vvvv2";
hostName3 = "vvvv3";
port = "9300";
clusterName = "zzzz";
}
createTransportClient();
}
public void createTransportClient()
{
try {
// 配置信息 -- 配置 集群的名字 + 连接池的个数
Settings esSetting = Settings.builder().put("cluster.name", clusterName) //设置连接的集群名称
.put("client.transport.sniff", false) //增加嗅探机制,找到ES集群
.put("thread_pool.search.size", Integer.parseInt(poolSize)) // 增加线程池个数,暂时设为5
.build();
client = new PreBuiltTransportClient(esSetting);
//配置host 和 端口port
InetSocketTransportAddress inetSocketTransportAddress = new InetSocketTransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
InetSocketTransportAddress inetSocketTransportAddress2 = new InetSocketTransportAddress(InetAddress.getByName(hostName2), Integer.valueOf(port));
InetSocketTransportAddress inetSocketTransportAddress3 = new InetSocketTransportAddress(InetAddress.getByName(hostName3), Integer.valueOf(port));
client.addTransportAddresses(inetSocketTransportAddress).addTransportAddresses(inetSocketTransportAddress2).addTransportAddresses(inetSocketTransportAddress3);
} catch (Exception e) {
logger.error("elasticsearch TransportClient create error!!!", e);
}
}
public TransportClient getInstance() {
return client;
}
方式二:使用 RestHighLevelClient + http 方式
/**
* es集群地址
*/
private String servers = "xxxx1,xxxx2,xxxx3";
/**
* 端口
*/
private int port = 9301;
private int size = 3;
private String scheme = "http";
private RestHighLevelClient restHighLevelClient;
@PostConstruct
public void init() {
logger.info("init Es Client...");
RestClientBuilder builder = getRestClientBuilder();
restHighLevelClient = new RestHighLevelClient(builder);
logger.info("init Es Client complete...");
}
public RestClientBuilder getRestClientBuilder() {
String[] address = StringUtils.split(servers, ",");
if (ArrayUtils.isNotEmpty(address) && address.length == size) {
return RestClient.builder(new HttpHost(address[0], port, scheme), new HttpHost(address[1], port, scheme), new HttpHost(address[2], port, scheme));
}
return null;
}
public RestHighLevelClient getInstance() {
if (restHighLevelClient == null) {
init();
}
return restHighLevelClient;
}