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 startupClient client = TransportClient.builder().build() .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));// on shutdownclient.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) {}}}}
后面的讲解,我都是采用这个工具类。
本文介绍了Elasticsearch客户端的四种创建方式,包括通过配置文件、指定IP地址、集群名称及内网IP段嗅探等不同场景下的创建方法。
1117

被折叠的 条评论
为什么被折叠?



