基于http的客户端rest client,官网给出的restclient有java low level rest client和java hight level rest client,前者兼容所有版本的es,后者是基于前者开发的,只暴露了部分api
添加依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.6.2</version>
</dependency>
获取客户端
public static RestClient client(){
HttpHost httpHost = new HttpHost("localhost",9200,"http");
RestClientBuilder clientBuilder = RestClient.builder(httpHost);
return clientBuilder.build();
}
操作ES
import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.nio.entity.NStringEntity;
import org.apache.http.util.EntityUtils;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.elasticsearch.client.RestClient;
import java.io.IOException;
public class Test {
public static void index(RestClient restClient, String indexName, String id, String jsonString) {
String method = "GET";
String endpoint = new StringBuilder()
.append("/")
.append(indexName)
.append("/_doc/_search")
.toString();
HttpEntity entity = new NStringEntity(jsonString, ContentType.APPLICATION_JSON);
Response response = null;
try {
Request request = new Request(method,endpoint);
// request.addParameters(Collections.EMPTY_MAP);
// request.setEntity(entity);
response = restClient.performRequest(request);
System.out.println(response);
System.out.println(response.getEntity());
System.out.println(EntityUtils.toString(response.getEntity(), "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
RestClient client = ESConfig.client();
index(client,"person","6e1cb2ac-2eab-4b0b-bbc2-017d63748c4f","");
}
}