SearchClient.java
Home
/
sm-search /
src /
main /
java /
com /
shopizer /
search /
utils /
SearchClient.java
package com.shopizer.search.utils;
import io.searchbox.client.JestClient;
import io.searchbox.client.JestClientFactory;
import io.searchbox.client.config.HttpClientConfig;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.elasticsearch.node.Node;
/**
* Singleton
* @author Carl Samson
*
* Now using Jest elasticsearch client to query through http interface
*
* https://github.com/searchbox-io/Jest/tree/master/jest
*
*/
public class SearchClient {
private static Logger log = Logger.getLogger(SearchClient.class);
private JestClient client = null;
private Node node = null;
private boolean init = false;
private ServerConfiguration serverConfiguration = null;
private String authenticationHeader = null;
public ServerConfiguration getServerConfiguration() {
return serverConfiguration;
}
public void setServerConfiguration(ServerConfiguration serverConfiguration) {
this.serverConfiguration = serverConfiguration;
}
public JestClient getClient() {
if(!init) {
initClient();
}
return client;
}
public SearchClient() {
}
public void stopClient() {
if(node!=null) {
node.close();
}
}
private synchronized void initClient() {
if(client==null) {
try {
//host
//port
//proxy settings
StringBuilder host = new StringBuilder()
.append(getServerConfiguration().getClusterHost())
.append(":").append(getServerConfiguration().getClusterPort());
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder(host.toString())
.multiThreaded(true)
.build());
client = factory.getObject();
if(!StringUtils.isBlank(getServerConfiguration().getProxyUser())
&& !StringUtils.isBlank(getServerConfiguration().getProxyPassword())) {
setAuthenticationHeader("Basic " + new String(Base64.encodeBase64(String.format("%s:%s", getServerConfiguration().getProxyUser(), getServerConfiguration().getProxyPassword()).getBytes())));
}
log.debug("****** ES client ready ********");
} catch (Exception e) {
e.printStackTrace();
}
}
}
public String getAuthenticationHeader() {
return authenticationHeader;
}
public void setAuthenticationHeader(String authenticationHeader) {
this.authenticationHeader = authenticationHeader;
}
}