您当前的位置: 首页 >  ar

程序员一灯

暂无认证

  • 2浏览

    0关注

    152博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Elasticsearch HttpClient方式连接

程序员一灯 发布时间:2021-12-24 14:46:09 ,浏览量:2

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

目录

一、关于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、引入相关依赖包
        
            org.elasticsearch.client
            elasticsearch-rest-client
            7.15.2
        
        
            junit
            junit
            4.13.2
        

 从被依赖的包列表可以看到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"
}

关注
打赏
1645367472
查看更多评论
立即登录/注册

微信扫码登录

0.0392s