- 🚌一个人可以走的很快,一群人可以走的很远🇨🇳
- 🎉点赞➕评论➕收藏 ➕关注== 养成习惯(一键四连)📝
- 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝
- 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!😆
目录
一、关于ES Java的一些API说明
1.1、总结
二、概述
三、通过HttpClient操作ES
3.1、引入相关依赖包
3.2、构建客户端
3.3、执行查询
3.4、输出结果
一、关于ES Java的一些API说明操作ES的Java API有几种:
TransportClient、NodeClient、XPackTransportClient、REST API(低级、高级REST😅)、Java API Client
- TransportClient:作为一个外部访问者,请求ES的集群,对于集群而言,它是一个外部因素。
- TransportClient建议使用Java高级REST客户端。但是7.16之后,Java高级REST又不建议使用了,建议使用Java API Client。
- NodeClient:作为ES集群的一个节点,它是ES中的一环,其他的节点对它是感知的。
- XPackTransportClient:服务安装了 x-pack 插件
- Java API Client:7.15版本才开始提供,还在不断完善中。
尽管ES的一些API总是变化,但是一般高版本都能支持低版本,本文主要是围绕REST进行讲解,官网针对TransportClient、REST接口有比较完善的文档进行学习。而且操作ES主要是CRUD,所以不必要追求API的变化,本质上都是使用HttpClient操作ES的HTTP接口。
二、概述Java 操作ES的REST 客户端有两种风格:Java REST Client [7.15] | Elastic
- Java Low Level REST Client:Elasticsearch 的官方低级客户端。它允许通过 http 与 Elasticsearch 集群通信。将请求编组和响应取消编组给用户。它与所有 Elasticsearch 版本兼容。
- Java 高级 REST 客户端:Elasticsearch 的官方高级客户端。基于低级客户端,它公开 API 特定方法并处理请求编组和响应解组。
7.15之后已经不推荐使用Java高级REST客户端了!!!又改名叫Java API客户端!!!😂
但是Java API Client也是从7.15才开始推出来,也是试验阶段。。。。🤣
三、通过HttpClient操作ES 3.1、引入相关依赖包
org.elasticsearch.client
elasticsearch-rest-client
7.15.2
junit
junit
4.13.2
从被依赖的包列表可以看到httpclient
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")).build();
restClient.close();
3.3、执行查询
RestClient restClient = null;
@Before
public void before(){
restClient = RestClient.builder(new HttpHost("localhost", 9200, "http")).build();
}
@After
public void after() throws IOException {
restClient.close();
}
public void doExecute(String method,String endpoint){
try{
Request request = new Request(method,endpoint);
Response response = restClient.performRequest(request);
System.out.println(response.getEntity());
System.out.println(response.getEntity().getContent());
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println(responseBody);
}catch (Exception e){
throw new RuntimeException(e.getCause());
}
}
@Test
public void getAll() {
doExecute("get","/");
}
3.4、输出结果
{
"name" : "WIN-ACMIHAQUB5F",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "03fvqoNRRN66JihZBxGs9A",
"version" : {
"number" : "7.16.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "5b38441b16b1ebb16a27c107a4c3865776e20c53",
"build_date" : "2021-12-11T00:29:38.865893768Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}