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;      }