ES7.4 学习日记——Java REST Client :连接到集群

1、ES7版本变化

  • 废弃了type,没有类型的概念;
  • 废弃TransportClient,只能使用restclient。

2、Maven依赖

连接客户端主要有Rest Low Level Client和Rest High Level Client两种可以使用,两者的主要区别在于:

Rest Low Level Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。最小Java版本要求为1.7。

Rest High Level Client:高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。

我选择使用的是Rest High Level Client,在pom.xml中添加依赖(我使用的是ES7.4.2,所以这里使用同版本的client客户端):

<dependency>
  <groupId>org.elasticsearch</groupId>
  <artifactId>elasticsearch</artifactId>
  <version>7.4.2</version>
</dependency>

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>elasticsearch-rest-high-level-client</artifactId>
  <version>7.4.2</version>
</dependency>

 3、连接到集群

  public static RestHighLevelClient getClient() {
    RestHighLevelClient client = new RestHighLevelClient(
      RestClient.builder(new HttpHost("localhost",9200,"http")));
    return client;
  }

  通过上面的代码就可以连接到集群,再通过获取已经建好的集群内的一个文档来看看是否连接成功。

    public static void main(String args[]) throws IOException {
        RestHighLevelClient client = getClient();
        GetRequest getRequest = new GetRequest(
                "news",
                "1");
        GetResponse getResponse=client.get(getRequest, RequestOptions.DEFAULT);
        String index = getResponse.getIndex();
        String id = getResponse.getId();
        System.out.println(index);
        System.out.println(id);
        if (getResponse.isExists()) {
            long version = getResponse.getVersion();
            System.out.println(version);
            String sourceAsString = getResponse.getSourceAsString();
            System.out.println(sourceAsString);
            Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
            byte[] sourceAsBytes = getResponse.getSourceAsBytes();
        } else {
            System.out.println(false);
        }
    }

原文地址:https://www.cnblogs.com/molihuacha/p/12051466.html

时间: 2024-08-29 07:55:28

ES7.4 学习日记——Java REST Client :连接到集群的相关文章

Ceph client无法连接至集群问题解决

1.问题描述 今天做iptables策略,重启集群中的一台机器后,输入ceph -s发现如下状况: [[email protected] ~]# ceph -s 2015-09-10 13:50:57.688516 7f6a6b8cc700 0 monclient(hunting): authenticate timed out after 300 2015-09-10 13:50:57.688553 7f6a6b8cc700 0 librados: client.admin authentic

myeclipse连接hadoop集群编程及问题解决

原以为搭建一个本地编程测试hadoop程序的环境很简单,没想到还是做得焦头烂额,在此分享步骤和遇到的问题,希望大家顺利. 一.要实现连接hadoop集群并能够编码的目的需要做如下准备: 1.远程hadoop集群(我的master地址为192.168.85.2) 2.本地myeclipse及myeclipse连接hadoop的插件 3.本地hadoop(我用的是hadoop-2.7.2) 先下载插件hadoop-eclipse-plugin,我用的是hadoop-eclipse-plugin-2.

Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题. 这样既能解决高并发瓶颈问题,又能解决热部署(不影响用户使用的情况下平滑更新生产服务器)问题. 因为项目是前后端分离的,所以本以为成本很低,没想到遇到了一系列的坑,解决了2天才搞定,发现了很多不是集群而是项目本身的问题. 我是同一个服务器下配置tomcat和nginx等,本文主要面向有一定基础的读者,基本配置就不在本文累述了(基础问题可以留言或者发邮件). 0x0_1 服务器环境 服务器: Cen

通过jedis连接redis单机成功,使用redis客户端可以连接集群,但使用JedisCluster连接redis集群一直报Could not get a resource from the pool

一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使用redis客户端可以连接集群(我使用的redis desktop manager) 在java中通过jedis连接redis单机也成功,但使用JedisCluster连接redis集群一直报Could not get a resource from the pool, 我以命令行方式操作是没问题的

k8s 连接ceph集群

创建 ceph admin secret 1. 由于使用的是外部ceph,因此在获得ceph.client.admin.keyring ceph.conf 后将 将ceph的配置文件ceph.comf放在所有节点的/etc/ceph目录下:(master + node) 2. 将caph集群的ceph.client.admin.keyring文件放在k8s控制节点的/etc/ceph目录 (master) 3.将ceph.client.admin.keyring 中的key 取出并加密,例如 k

马哥学习笔记二十二——高可用集群原理

HA Resource:资源 FailOver:故障转移 FailBack:故障转回 资源粘性:资源是否倾向于留在当前节点 Messaging Layer:集群服务信息层,基于UDP互相传递心跳信息,集群事务信息等 heartbeat(v1,v2,v3) heartbeat v3:heartbeat,pacemaker,cluster-glue corosync cman keepalived ultramonkey CRM:(cluster resource manager)集群资源管理器,统

lua连接redis集群

连接redis集群需要用到llua-resty-redis-cluster模块 github地址:https://github.com/cuiweixie/lua-resty-redis-cluster 下载完成后,只需要用到包中2个文件rediscluster.lua和redis_slot.c .c文件无法在nginx配置文件中引入,需要编译成.so文件,编译命令:  gcc SOURCE_FILES -fPIC -shared -o TARGET 如下则是连接redis集群代码: local

配置 Jenkins 连接 Kubernetes 集群

需求:外部 Jenkins 需要连接 Rancher 中的 Kubernetes 集群. 1.集群 config 文件 Rancher 首页,"集群" --> 右上角"Kubeconfig 文件",后续需要用到该文件内容. apiVersion: v1 kind: Config clusters: - name: "cicd" cluster: server: "https://rancher.xxxxxx.com/k8s/clu

Java连接Elasticsearch集群

package cn.test; import java.net.InetAddress; import java.net.UnknownHostException; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTran