Elasticsearch  创建Client有几种方式。

首先在 Elasticsearch  的配置文件 elasticsearch.yml中。定义cluster.name。如下:

cluster.name: sojson-application

创建方式一:

import static org.elasticsearch.node.NodeBuilder.*;
//节点方式创建。
Node node = nodeBuilder().clusterName("yourclustername").node();
Client client = node.client();
/*
还有很多节点方式的创建方式,查看下面的官网地址。
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/node-client.html
*/

创建方式二:

/**
 * 指定 ip地址创建
 */
// on startup
Client client = TransportClient.builder().build()
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown
client.close();

创建方式三:

//按集群名称创建
Settings settings = Settings.settingsBuilder()
        .put("cluster.name", "sojson-application").build();
Client client = TransportClient.builder().settings(settings).build();
//Add transport addresses and do something with the client...

创建方式四:

//同一内网Ip段,嗅的方式自己查找,组成集群。
Settings settings = Settings.settingsBuilder()
        .put("client.transport.sniff", true).build();
TransportClient client = TransportClient.builder().settings(settings).build();
/*
客户端允许嗅其余的集群,它将数据节点添加到列表的机器使用。在这种情况下要注意,将使用的IP地址的其他节点开始(“publish”地址)。启用它,设置client.transport.sniff为 true:
*/

其实还有很多方式。具体使用哪种,看自己需求

工具类:

package com.sojson.core.elasticsearch.utils;

import java.net.InetAddress;

import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;

import com.sojson.common.utils.LoggerUtils;
import com.sojson.core.config.IConfig;

public class ESTools {
    
    public final static Client client =  build();
    
    public final static Class clazz = ESTools.class;

/**
     * 创建一次
     * @return
     */
    private static Client build(){
        if(null != client){
            return client;
        }
        Client client = null;
        String ip = IConfig.get("es_ip");
        LoggerUtils.fmtDebug(clazz, "获取ESIP地址:%s", ip);
        try {
            LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 开始");
            Settings settings = Settings
                .settingsBuilder()
                    .put("cluster.name","sojson-application")
                        .put("client.transport.sniff", true)
                            .build();
            client = TransportClient.builder().settings(settings).build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), 9300));
            LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 结束");
        } catch (Exception e) {
            LoggerUtils.fmtError(clazz, e, "创建Client异常");
        }
        return client;
    }
    
    /**
     * 关闭
     */
    public static void close(){
        if(null != client){
            try {
                client.close();
            } catch (Exception e) {
                
            }
        }
    }
    
}

最新文章

  1. JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
  2. ajax提交表单+前端验证小示例
  3. Java笔记7-多态父类静态
  4. 搭建emacs的go编程语言环境
  5. 安装Maven、Eclipse设置、添加地址JAR
  6. POJ 3701 概率DP
  7. HDOJ-ACM1023(JAVA)
  8. 吐槽:Lambda表达式
  9. ural 1052 Rabbit Hunt
  10. Python中的图形库
  11. linux C语言处理正则表达式
  12. AHD-模拟高清芯片RN6752替代TVP5150/CJC5150
  13. python assert用法
  14. 数据库---mysql内置功能
  15. windows WTL使用命令行参数
  16. python --flask框架的搭建--(flask,python2,python3都可以运行)
  17. Oracle触发器(trigger):一般用法
  18. kbmmw 的HTTPSmartService入门
  19. Java入门系列(八)多线程
  20. JMeter学习笔记--JMeter执行顺序规则

热门文章

  1. apache 配置 SSL
  2. List的set和add方法
  3. xpath测试工具 xpath调试工具
  4. 【linux高级程序设计】(第十五章)UDP网络编程应用 5
  5. 漂亮的弹窗口插件——sweetAlert的使用
  6. poj3264(Sparse-Table 算法模板)
  7. [Git]Git 常用的操作命令
  8. 你也许还不知道const_cast,static_cast,dynamic_cast,reinterpret_cast的区别吧?
  9. JDBC完整版实现
  10. 每天一个liunx命令2之rz和sz命令