您的位置:首页 > 编程语言 > Java开发

【elasticsearch之java入门】第一篇---通过TransportClient连接到elasticsearch

2018-01-23 14:14 555 查看
java通过TransportClient连接elasticsearch,TransportClient通过传输模式来连接到一个Elasticsearch的集群。它并不会加入到集群当中,而是会简单的得到一个或者更多的初始化的传输地址并且在每一个活动(绝大多数的活动可能会是两跳的操作符)当中以轮询调度的方式来和它们通信。

// 开启客户端

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)

        .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))

        .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));

// 关闭客户端

client.close();

注意如果你用了一个和“elasticsearch”不同的集群名称,你必须设置集群的名字。

Settings settings = Settings.builder()

        .put("cluster.name", "myClusterName").build();

TransportClient client = new PreBuiltTransportClient(settings);

TransportClient伴随着一个集群探测特征,这允许它来动态的增加新的主机以及移除旧的。嗅探器开启时,TransportClient会连接到通过调用addTransporrtAddress来构建的内部节点列表的节点。在这之后,客户端会调用那些节点的内部集群状态的API来发现可用的数据节点。客户端的内部节点列表只能被替换为那些数据节点。默认列表会每五秒刷新一次。注意嗅探器连接到的IP地址是那些节点的Elasticsearch的配置当中声明的publish地址。
记住这个节点列表可能不会记住那些连接过的非数据节点。如果,举个例子,你一开始连接到了一个主节点,嗅探之后,更多的请求不会到达主节点,而是到达任意的其他数据节点。TransportClient排除非数据节点的原因是避免发送搜索请求到单独的主节点。

为了开启嗅探,设置client.transport.sniff为true:

Settings settings = Settings.builder()

        .put("client.transport.sniff", true).build();

TransportClient client = new PreBuiltTransportClient(settings);

其他的TransportClient等级设置包括:

参数       

  描述

client.transport.ignore_cluster_name
  
设置为true来忽略集群名称验证连接的节点 (since 0.19.4)

client.transport.ping_timeout
    等待节点ping返回的时间,默认为5秒

client.transport.nodes_sampler_interval
  检验已连接节点列表的活跃性的间隔时间,默认为5秒

本文相关信息来自elasticsearch官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.1/transport-client.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: