- 導入Elasticsearch依賴包
<!-- Elasticsearch6.4.3 依賴 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>${elasticsearch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>${elasticsearch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>${elasticsearch.version}</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>${elasticsearch.version}</version> </dependency>
- properties配置文件
elasticsearch.ip=es庫ip elasticsearch.port=9300(es對外連接端口) elasticsearch.cluster.name=elasticsearch elasticsearch.shards=3 elasticsearch.replicas=1 elasticsearch.pool=3 elasticsearch.regenerateIndexEnabled=false elasticsearch.syncDataEnabled=true elasticsearch.sniff=true
- 獲取連接
public static Connection getConn(){ Properties properties = new Properties(); // 使用ClassLoader加載properties配置文件生成對應的輸入流 InputStream in = ES_Utils.class.getClassLoader().getResourceAsStream("elasticsearch.properties"); // 使用properties對象加載輸入流 try { properties.load(in); } catch (IOException e1) { e1.printStackTrace(); } String url = properties.getProperty("postgresql.url"); String driver = properties.getProperty("postgresql.driver"); String user = properties.getProperty("postgresql.user"); String password = properties.getProperty("postgresql.password"); try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); //獲取連接 } catch (ClassNotFoundException e){ e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }
- 獲取單例客戶端
public static TransportClient getSingleClient() { Properties properties = new Properties(); // 使用ClassLoader加載properties配置文件生成對應的輸入流 InputStream in = ES_Utils.class.getClassLoader().getResourceAsStream("elasticsearch.properties"); // 使用properties對象加載輸入流 try { properties.load(in); } catch (IOException e1) { e1.printStackTrace(); } String host = properties.getProperty("elasticsearch.ip"); String cluster_name = properties.getProperty("elasticsearch.cluster.name"); int port = Integer.parseInt(properties.getProperty("elasticsearch.port")); /* * int shards = * Integer.parseInt(properties.getProperty("elasticsearch.shards")); int * replicas = * Integer.parseInt(properties.getProperty("elasticsearch.replicas")); * String sniff = properties.getProperty("elasticsearch.sniff"); */ if (client == null) { synchronized (TransportClient.class) { } if (client == null) { try { /** * 配置信息 client.transport.sniff 增加嗅探機制,找到ES集群 * thread_pool.search.size 增加線程池個數,暫時設為3 */ Settings esSetting = Settings.builder().put("cluster.name", cluster_name).build(); // 配置信息Settings自定義 client = new PreBuiltTransportClient(esSetting); TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(host), port); client.addTransportAddress(transportAddress); } catch (Exception e) { LOGGER.error("elasticsearch TransportClient create error!!!", e); } } } return client; }
- 獲取es庫客戶端
@SuppressWarnings("resource") public static ElasticsearchClient getEsClient(){ Properties properties = new Properties(); // 使用ClassLoader加載properties配置文件生成對應的輸入流 InputStream in = ES_Utils.class.getClassLoader().getResourceAsStream("elasticsearch.properties"); // 使用properties對象加載輸入流 try { properties.load(in); } catch (IOException e1) { e1.printStackTrace(); } String host = properties.getProperty("elasticsearch.ip"); int port = Integer.parseInt(properties.getProperty("elasticsearch.port")); try { es_client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new TransportAddress(InetAddress.getByName(host), port)); } catch (Exception e) { e.printStackTrace(); } return es_client; }