1.导入pom文件
<!-- elasticsearch package =============================================== -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client-sniffer</artifactId>
<version>6.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.5.0</version>
</dependency>
依赖版本要对应上,查看lucene-core的版本。访问 http://localhost:9200
{
"name" : "M0_zAyt",
"cluster_name" : "sy-elasticsearch",
"cluster_uuid" : "WOYPuunWTTyh1p1KMHGsfQ",
"version" : {
"number" : "6.5.4", // es版本
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0", // 这就是对应的版本
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
2.导入之后,创建RestClientFactory
/**
* Java客户端生成工厂
* elasticsearch util client
*/
public class RestClientFactory{
private static final String HOST = "192.168.8.11";
private static final int PORT = 9200;
private static final String SCHEMA = "http";
private static final int CONNECT_TIME_OUT = 1000;
private static final int SOCKET_TIME_OUT = 30000;
private static final int CONNECTION_REQUEST_TIME_OUT = 500;
private static final int MAX_CONNECT_NUM = 100;
private static final int MAX_CONNECT_PER_ROUTE = 100;
private static HttpHost HTTP_HOST = new HttpHost(HOST,PORT,SCHEMA);
private static boolean uniqueConnectTimeConfig = false;
private static boolean uniqueConnectNumConfig = false;
private static RestClientBuilder builder;
private static RestClient restClient;
private static RestHighLevelClient restHighLevelClient;
static {
init();
}
public static void init(){
// 可以初始化多个HttpHost
builder = RestClient.builder(HTTP_HOST);
if(uniqueConnectTimeConfig){
setConnectTimeOutConfig();
uniqueConnectTimeConfig = true;
}
if(uniqueConnectNumConfig){
setMultiConnectConfig();
uniqueConnectNumConfig = true;
}
restClient = builder.build();
restHighLevelClient = new RestHighLevelClient(builder);
}
// 主要关于异步httpclient的连接延时配置
public static void setConnectTimeOutConfig(){
// requestConfigBuilder
builder.setRequestConfigCallback(requestConfigBuilder -> {
requestConfigBuilder.setConnectTimeout(CONNECT_TIME_OUT);
requestConfigBuilder.setSocketTimeout(SOCKET_TIME_OUT);
requestConfigBuilder.setConnectionRequestTimeout(CONNECTION_REQUEST_TIME_OUT);
return requestConfigBuilder;
});
}
/**
* 主要关于异步httpclient的连接数配置
*/
public static void setMultiConnectConfig(){
// setHttpClientConfigCallback
builder.setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.setMaxConnTotal(MAX_CONNECT_NUM);
httpClientBuilder.setMaxConnPerRoute(MAX_CONNECT_PER_ROUTE);
return httpClientBuilder;
});
}
public static RestClient getClient(){
return restClient;
}
public static RestHighLevelClient getHighLevelClient(){
if(restHighLevelClient == null){
init();
}
return restHighLevelClient;
}
public static void close() {
if (restHighLevelClient != null) {
try {
restHighLevelClient.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
uniqueConnectNumConfig = false;
uniqueConnectTimeConfig = false;
}
}
}
}
3.使用
// 拿到客户端,通过Api就可以使用了。
RestHighLevelClient client = RestClientFactory.getHighLevelClient()
网友评论