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) {
}
}
}
}