Elasticsearch HttpClient方式连接

  • 🚌一个人可以走的很快,一群人可以走的很远🇨🇳
  • 🎉点赞评论收藏 ➕关注== 养成习惯(一键四连)📝
  • 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝
  • 🙏作者水平有限,欢迎各位大佬指点,相互学习进步!😆

目录

一、关于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

  1. TransportClient:作为一个外部访问者,请求ES的集群,对于集群而言,它是一个外部因素。
  2. TransportClient建议使用Java高级REST客户端。但是7.16之后,Java高级REST又不建议使用了,建议使用Java API Client。
  3. NodeClient:作为ES集群的一个节点,它是ES中的一环,其他的节点对它是感知的。
  4. XPackTransportClient:服务安装了 x-pack 插件
  5. Java API Client:7.15版本才开始提供,还在不断完善中。

1.1、总结

尽管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、引入相关依赖包

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.15.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

 从被依赖的包列表可以看到httpclient

 3.2、构建客户端

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"
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑石课堂

请给我打钱!!!谢谢,不客气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值