Elasticsearch教程(六) elasticsearch Client创建

信息发布:soゝso 发布日期:2016-08-23 00:13 热度:61174 分享到:

Elasticsearch  目录

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

后面的讲解,我都是采用这个工具类。


本文主题

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

¥我需要走的更远,点击我 赞助。 如果还有疑问,点击我加群,为你提供最好的解答。


工具导航地图

 
Nodejs + socket Demo 赞助二维码 赞助名单 百度口碑点赞 查看QQ群美女帅哥 点击加QQ群 听音乐 开启弹幕 X
反馈意见