大家好,初学elasticsearch使用版本为1.7.0,java程序每次获取client平均需要3S,这样用搜索的意义就没有了。
看了看网上的帖子说client做成单例模式,每次不关闭client,可是做成单例模式不关闭client,es的控制台会报错,但是client还可以继续使用。
请问大家有没有碰到类似的问题?
获取client代码如下:
private static final Log log = LogFactory.getLog(ElasticService.class);
private static Settings settings = ImmutableSettings.settingsBuilder().put("client.transport.ping_timeout", "10s").put("client.transport.sniff", "true").build();
private TransportClient searchClient = null;
public TransportClient getElasticClient() throws Exception{
/**
* 你可以设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,
* 把集群中其它机器的ip地址加到客户端中,这样做的好处是一般你不用手动设置集群里所有集群的ip到连接客户端,
* 它会自动帮你添加,并且自动发现新加入集群的机器。
*/
try {
Class clazz = Class.forName(TransportClient.class.getName());
Constructor constructor = clazz.getDeclaredConstructor(new Class[] { Settings.class });
constructor.setAccessible(true);
searchClient = ((TransportClient) constructor.newInstance(new Object[] { settings }));
searchClient.addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300));
return searchClient;
} catch (Exception e) {
log.error("elasticSearch Client init error :"+e);
throw new RuntimeException("elasticSearch Client init error", e);
}
}
请问大家是怎么做的?
就这么多分了····都贡献了。
求代码,求版本····