1. javaAPI操作
1.1 elasticsearch-rest-client
(1) maven依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${rest.client.version}</version><!-- 7.3.0 -->
</dependency>
(2) 相关API(7.3.0)
1. 创建客户端
//es客户端构造器 RestClientBuilder builder = RestClient.builder(new HttpHost(String hostname, int port, String scheme)); Header[] defaultHeaders = new Header[]{new BasicHeader(String name, String value)}; //设置默认请求头 builder.setDefaultHeaders(defaultHeaders); //异常监听器 builder.setFailureListener(new RestClient.FailureListener(){ @Override public void onFailure(Node node) { // TODO es异常监听处理 System.out.println(21321321); } }); //配置线程数 builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback(){ @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) { httpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build()); return httpAsyncClientBuilder; } }); //设置超时时间 builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback(){ @Override public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) { builder.setConnectTimeout(5000); builder.setSocketTimeout(60000); return builder; } }); //创建客户端 RestClient restClient = builder.build();
2. 定义请求信息
Request request = new Request(String method, String endpoint);
3. 定义参数实体
HttpEntity entity=new NStringEntity(String data, ContentType contentType);//json ContentType.APPLICATION_JSON
4. 响应
Response response = restClient.performRequest(Request request);//同步
Response response = restClient.performRequestAsync(Request request, ResponseListener responseListener);//异步
5. 响应信息
response.getStatusLine().getStatusCode();//状态码 String responseBody = EntityUtils.toString(response.getEntity());//响应体
(3) 实例(7.3.0)
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));//设置HttpHost,可设置多个
Header[] defaultHeaders = new Header[]{new BasicHeader("header", "value")};
builder.setDefaultHeaders(defaultHeaders);//设置请求头
builder.setFailureListener(new RestClient.FailureListener(){
@Override
public void onFailure(Node node) {
// TODO es异常监听处理
}
});
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback(){
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
// TODO 连接池配置eshttpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build());
return httpAsyncClientBuilder;
}
});
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback(){
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
// TODO 超时时间配置
builder.setConnectTimeout(5000);
builder.setSocketTimeout(60000);
return builder;
}
});
RestClient restClient = builder.build();
String queryString="";//定义查询json
HttpEntity entity = new NStringEntity(queryString, ContentType.APPLICATION_JSON);
Request request = new Request("get", "index/_search");
request.setEntity(entity);//设置参数及查询条件
Response response = restClient.performRequest(request);//请求获取响应信息
System.out.println(response.getStatusLine().getStatusCode());//响应状态码
String responseBody = EntityUtils.toString(response.getEntity());//获取响应体
1.2