private ElasticClientProxy internalBuildElasticClient(String url) {
String ipUrl = url.substring(ELASTIC_SEARCH_DRIVER_PREFIX.length());
Settings.Builder settingBuilder = Settings.builder();
settingBuilder.put("client.transport.sniff", true);
String hostListString = ipUrl;
int clusterNamePosIdx = ipUrl.lastIndexOf("/");
if (clusterNamePosIdx >= 0) {
hostListString = hostListString.substring(0, clusterNamePosIdx);
settingBuilder.put("cluster.name", ipUrl.substring(clusterNamePosIdx + 1));
}
else {
settingBuilder.put("client.transport.ignore_cluster_name", true);
}
List<InetSocketTransportAddress> addressList = Lists.newLinkedList();
String[] connStringList = hostListString.split(Constants.COMMA);
for (String connStr : connStringList) {
String[] connArr = connStr.split(Constants.COLON);
if (connArr.length == 1) {
addressList.add(new InetSocketTransportAddress(new InetSocketAddress(connArr[0], DEFAULT_ES_PORT)));
}
else {
addressList.add(new InetSocketTransportAddress(new InetSocketAddress(connArr[0], Integer.parseInt(connArr[1]))));
}
}
TransportClient transportClient = new PreBuiltTransportClient(settingBuilder.build())
.addTransportAddresses(addressList.toArray(new InetSocketTransportAddress[addressList.size()]));
return (ElasticClientProxy) Proxy.newProxyInstance(ElasticClientProxy.class.getClassLoader(),
new Class[]{ElasticClientProxy.class}, new CloseClientProxyInvocationHandler(transportClient));
}