设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] elasticSearch源码分析之集群连接方式

[复制链接]

尚未签到

发表于 2017-5-21 08:43:09 | 显示全部楼层 |阅读模式
elasticsearch提供两种方式连接到集群,一种是通过在你的程序中创建一个嵌入es节点(Node),使之成为es集群的一部分,然后通过这个节点来与es集群通信;另一种则是用TransportClient这个接口和es集群通信。
    首先,我们尝试嵌入节点的方式,有如下三种方式(区别如下注释):

@Test
public void testDefaultNode(){
//默认配置(数据节点)启动一个节点,会自动加入同网段的es集群,前提就是es的集群名(cluster.name)参数要设置一致
//默认状态下es集群会自动给它分配一些索引的分片
//会加入集群
Node node = NodeBuilder.nodeBuilder().build();
Client client = node.client();
ClusterAdminClient cluster = client.admin().cluster();
System.out.println(cluster.toString());
node.close();
}


@Test
public void testClientNode(){
//客户端配置(客户端节点,不保存任何数据)
//作为一个客户端而不去保存数据,就可以设置把node.data设置成false或 node.client设置成true
//会加入集群
Node node = NodeBuilder.nodeBuilder().client(true).node();
Client client = node.client();
ClusterAdminClient cluster = client.admin().cluster();
System.out.println(cluster.toString());
node.close();
}


@Test
public void testLocalNode(){
//本地节点
//不会加入集群
//本地单元测试
Node node = NodeBuilder.nodeBuilder().local(true).node();
Client client = node.client();
ClusterAdminClient cluster = client.admin().cluster();
System.out.println(cluster.toString());
node.close();
}


    第二种方式(TransportClient接口):

@Test
public void testTransportClient(){
//可以不启动节点就与es集群通信,只需要指定es集群中其中一台或多台机的ip地址和端口
Client client = new TransportClient()
.addTransportAddress(new InetSocketTransportAddress("192.168.1.135", 9300))
.addTransportAddress(new InetSocketTransportAddress("192.168.1.131", 9300))
.addTransportAddress(new InetSocketTransportAddress("192.168.1.132", 9300))
.addTransportAddress(new InetSocketTransportAddress("192.168.1.133", 9300));
client.close();
}

    借此说明一下两个配置参数:

@Test
public void updateClusterName(){
//更改集群名
Settings settings = ImmutableSettings.settingsBuilder()     
.put("cluster.name", "myClusterName").build();
Client client = new TransportClient(settings);
client.close();
}



@Test
public void autoDiscoveryNode(){
//设置client.transport.sniff为true来使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中
Settings settings = ImmutableSettings.settingsBuilder()   
.put("client.transport.sniff", true).build();
Client client = new TransportClient(settings);
client.close();
}


程序猿行业技术生活交流群:181287753(指尖天下),欢迎大伙加入交流学习。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379473-1-1.html 上篇帖子: 搜索浅谈(Elasticsearch和Lucene4分享) 下篇帖子: Elasticsearch模块功能之-快照和恢复(snapshot and restore)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表