阅读文本大概需要7分钟。
Java REST客户端有两种风格:
Java低级别REST客户端(Java Low LevelREST Client):Elasticsearch的官方low-level客户端。它允许通过http与Elasticsearch集群进行通信。不会对请求进行编码和响应解码。 它与所有Elasticsearch版本兼容。
Java高级REST客户端(Java HighLevel REST Client):Elasticsearch的官方high-level客户端。 基于low-level客户端,它公开了特定API操作Elasticsearch。
官方API地址:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-overview.html
Java Low Level REST Client所需的最低Java版本是1.7。低级客户端与Elasticsearch的发布周期相同。发布的第一个版本为5.0.0-alpha4。客户端版本和与之通信的Elasticsearch版本没有任何关系,可以替换客户端版本为你想要的任何版本。低级客户端与所有Elasticsearch版本兼容。
1、 Maven配置
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>6.5.4</version>
</dependency>
2、 创建RestClient对象
public static RestClient getRestClient(){
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http")).build();
return restClient;
}
RestClient实例可以通过RestClientBuilder类创建,通过RestClient 的 builder(HttpHost ...)静态方法创建。 唯一需要的参数是客户端将与之通信的一个或多个主机
RestClient类是线程安全的,理想情况下与使用它的应用程序具有相同的生命周期。当不再需要时关闭它是非常重要的,这样它所使用的所有资源以及底层http客户端实例及其线程都可以得到释放。
restClient.close();
RestClientBuilder还允许在构建RestClient实例时对默认参数进行配置。
//配置可选参数
RestClientBuilder builder = RestClient.builder(
new HttpHost("localhost", 9200, "http"));
Header[] defaultHeaders = new Header[]{new BasicHeader("header", "value")};
//设置每个请求需要发送的默认headers,这样就不用在每个请求中指定它们。
builder.setDefaultHeaders(defaultHeaders);
// 设置应该授予的超时时间,以防对相同的请求进行多次尝试。默认值是30秒,与默认socket超时时间相同。
// 如果自定义socket超时时间,则应相应地调整最大重试超时时间。
builder.setMaxRetryTimeoutMillis(10000);
builder.setFailureListener(new RestClient.FailureListener() {
public void onFailure(HttpHost host) {
//设置一个监听程序,每次节点发生故障时都会收到通知,这样就可以采取相应的措施。
//Used internally when sniffing on failure is enabled.(这句话没搞懂啥意思)
}
});
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
//设置允许修改默认请求配置的回调
// (例如,请求超时,身份验证或org.apache.http.client.config.RequestConfig.Builder允许设置的任何内容)
return requestConfigBuilder.setSocketTimeout(10000);
}
});
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
//设置允许修改http客户端配置的回调
// (例如,通过SSL的加密通信,或者org.apache.http.impl.nio.client.HttpAsyncClientBuilder允许设置的任何内容)
return httpClientBuilder.setProxy(new HttpHost("proxy", 9000, "http"));
}
});
3、 创建Document索引
RestClient有如下,但是只有第一个没有标识过期,所以就使用第一个,其他的放弃使用。
public static void getCreateIndx(RestClient client){
String method = "PUT";
String endpoint = "/book";
try {
Request request = new Request(method, endpoint);
Response response = client.performRequest(request);
System.out.println(EntityUtils.toString(response.getEntity()));
}catch (Exception e) {
e.printStackTrace();
}
}
推荐阅读
关注我每天进步一点点
你点的每个在看,我都认真当成了喜欢