elasticsearch的两种初始化方式
- 2019 年 12 月 30 日
- 筆記
方式一:使用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; }