ElastaticSearch ---es客户端 TransportClient
2023-09-14 09:11:43 时间
TransportClient
TransportClient客户端,官方在es 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它.
es 7.0及以上的版本,请使用 RestHighLevelClient。
如果项目中使用的es版本不高,可以使用 TransportClient。
依赖
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>5.5.1</version>
</dependency>
初始化TransportClient 客户端
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class EsTransportClient {
/**
* 初始化TransportClient 客户端
*
* @param clusterName es集群名称
* @param ip es的ip地址
* @param port es的端口
* @return
*/
public static TransportClient getClient(String clusterName, String ip, int port) {
Settings settings = Settings.builder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", true)
.build();
TransportClient transportClient = null;
try {
transportClient = new PreBuiltTransportClient(settings);
transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), port));
return transportClient;
} catch (UnknownHostException e) {
log.error("UnknownHostException exception.");
}
return transportClient;
}
/**
* 多节点的es集群
* @param nodes 格式为:ip:端口,多个节点用逗号隔开 ,比如 10.123.666.1:9300,10.123.666.2:9300
* @param clusterName 集群名称
* @return
*/
public static TransportClient getClientByNodes(String nodes, String clusterName) {
String[] hosts = nodes.split(",");
Settings settings = Settings.builder().put("cluster.name", clusterName)
.put("client.transport.sniff", true)
.put("client.transport.ping_timeout", "10s")
.build();
TransportClient esClient = null;
try {
esClient = new PreBuiltTransportClient(settings);
for (String host : hosts) {
String[] hostAndPort = host.split(":");
esClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostAndPort[0]),
Integer.parseInt(hostAndPort[1])));
}
} catch (NumberFormatException | UnknownHostException e) {
log.error("getClientByNodes exception.", e);
}
return esClient;
}
}
相关文章
- RedisJson 横空出世,比 ES 快7 倍,惊爆了!
- RedisJson 横空出世,比 ES 快7 倍,惊爆了
- ELK数据管理工具ES-Head部署
- es集群搭建_k8s和docker搭建es集群
- dirsearch使用方法_查看es某个索引下的所有数据
- 【ES三周年】轻量级的搜索引擎MeiliSearch
- 【ES三周年】+windows安装es、kibana教程
- 【架构师(第九篇)】如何让 Node 环境支持 ES Module
- 【ES三周年】+搜索引擎ES的入门教程
- 【ES三周年】白嫖腾讯一个月的ES,实现了MySQL的实时监控
- 使用ES连接Oracle一种简单的解决方案(es连接oracle)
- ES来打破传统从Oracle走向 NoSQL(es替代oracle)
- 比较ES与Oracle数据库异同与选择(es和oracle数据库)
- ES与Oracle数据同步技术研究(es oracle 同步)