elasticsearch 客户端的建立

一般情况下,我们可以用如下方法获取一个java client。

1
2
3
4
5
6
7
8
9
    public Client getTransportClient(){
 
        // 设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中,
        // 这样做的好处是一般你不用手动设置集群里所有集群的ip到连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器。
        Settings settings = ImmutableSettings.settingsBuilder().put(m).put("cluster.name",clusterName).put("client.transport.sniff", true).build();
        Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(host, port));
 
        return client;
    }

或者 如下方法:

1
2
3
4
5
6
7
8
9
    public Client getEmbeddedClient(){
        NodeBuilder nodeBuilder = new NodeBuilder();
 
      Node node = nodeBuilder.loadConfigSettings(false).clusterName(clusterName).local(true).node();
//      Node node = nodeBuilder.loadConfigSettings(false).clusterName(clusterName).node();
      Client client = node.client();
 
      return client;
    }

这种在测试环境下没有问题,但是在线上环境下会出问题,会出现内存溢出和超时等问题。
建议采用如下方法获取java client实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 
    static Map<String, String> m = new HashMap<String, String>();
    // 设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中,
    static Settings settings = ImmutableSettings.settingsBuilder().put(m).put("cluster.name",clusterName).put("client.transport.sniff", true).build();
 
    // 创建私有对象
    private static TransportClient client;
 
    static {
        try {
            Class<?> clazz = Class.forName(TransportClient.class.getName());
            Constructor<?> constructor = clazz.getDeclaredConstructor(Settings.class);
            constructor.setAccessible(true);
            client = (TransportClient) constructor.newInstance(settings);
            client.addTransportAddress(new InetSocketTransportAddress(host, port));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    // 取得实例
    public static synchronized TransportClient getTransportClient() {
        return client;
    }

java client 会创建一个连接池,所以用完后不要关闭,下次可以直接复用。采用单例模式,可以保证应用只产生一个实例。
采用java反射的方法生成一个client ,效率明显高于由于new 一个客户端。

时间: 2024-10-08 10:45:14

elasticsearch 客户端的建立的相关文章

ElasticSearch客户端注解使用介绍

The best elasticsearch highlevel java rest api-----bboss 1.ElasticSearch客户端bboss提供了一系列注解 @ESId  用于标识实体对象中作为docid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存,默认为true-保存,false不保存,字段名称为属性名称.ESId可用于添加和修改文档 @ESParentId 用于标识实体对象中作为parentid的属性,该注

2:elasticsearch客户端创建

根据elasticsearch的API,首先,要创建一个客户端实例Client,代码如下 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import 

Aerospike C客户端手册———建立连接

C客户端函数库 建立连接 Aerospike对象描述一个集群.连接到一个集群,第一步需要配置一个aerospike对象. 配置客户端 要配置客户端,应提供一个初始化且填充了配置信息的as_config对象. 首先,使用as_config_init()以默认值初始化as_config: as_config config; as_config_init(&config); 初始化as_config完成后,使用特定于应用的设置来填充它. 最低限度,至少需要配置一个服务器地址给客户端做seed.客户端将

springboot整合es客户端操作elasticsearch(二)

在上章节中整合elasticsearch客户端出现版本问题进行了处理,这章来进行springboot整合得操作 环境:elaticsearch6.2.1,springboot 2.1.8 客户端版本采用6.6.1 一 pom.xml依赖引入 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

Sftp和ftp 区别、工作原理等(服务器被动就是被动模式,PORT模式建立数据传输通道是由服务器端发起的,在PASV模式中,数据传输的通道的建立是由FTP客户端发起的)good

Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.在此协议中SS

Python的网络编程[1] -&gt; FTP -&gt; 使用 ftplib 建立 FTP 客户端

使用 ftplib 建立 FTP 客户端 用于建立FTP Client,与 pyftplib 建立的 Server 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 客户端 1. 模块信息 1.1 常量 / Constants FTP_PORT = 21 标准的FTP协议服务端端口 1.2 类 / Class 1.2.1 FTP()类 ftp = FTP() 无需参数传入直接生成FTP的客户端实例 1.2.1.1 connect()方法 函数调用: ftp.connect(address

搜索引擎选择: Elasticsearch与Solr

搜索引擎选型调研文档 Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合. Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架. 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.

ElasticSearch搜索引擎使用&mdash;从0到1

阅读目录: 背景 安装 查找.下载rpm包 .执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到elasticsearch专属账户测试能否成功启动 安装自启动elasticsearch servicewrapper包 下载elasticsearch servicewrapper 包 elasticsearch servicewrapper开源包的配置小bug servicewrapper安装 chkconfig -add 加入linux

全文检索选择-------- Elasticsearch与Solr

Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合. Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架. 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.需要很多的学习了解,才