配置项作用 #
client.type 配置项指定 Easysearch 客户端的类型,决定客户端与集群的连接方式和行为模式。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
node
是否必需 #
可选配置项
配置值说明 #
| 值 | 说明 |
|---|---|
node | 节点客户端(默认) |
transport | 传输客户端 |
客户端类型详解 #
1. Node Client(节点客户端) #
节点客户端是默认的客户端类型,具有以下特点:
┌─────────────────────────────────────┐
│ Node Client │
│ (作为集群的一部分运行) │
└─────────────────────────────────────┘
│
├─→ 加入集群
├─→ 参与集群状态
├─→ 持有数据(可选)
├─→ 执行分布式操作
└─→ 本地执行请求
特点:
- 作为集群节点运行
- 可以持有数据(如果配置了 data 角色)
- 可以成为主节点(如果配置了 master 角色)
- 请求可以在本地执行,减少网络开销
- 了解集群状态
适用场景:
- 应用服务器与 Easysearch 部署在同一主机
- 需要低延迟的本地访问
- 长期运行的连接
2. Transport Client(传输客户端) #
传输客户端通过传输协议连接到远程集群:
┌─────────────────────────────────────┐
│ Transport Client │
│ (连接到远程集群,不作为节点) │
└─────────────────────────────────────┘
│
├─→ 不加入集群
├─→ 不持有数据
├─→ 不参与主节点选举
└─→ 通过网络转发所有请求
特点:
- 不作为集群节点运行
- 不持有数据
- 不参与主节点选举
- 所有请求通过网络发送到集群节点
- 轻量级连接
适用场景:
- 应用程序与 Easysearch 分离部署
- 短期连接或批量处理任务
- 多个应用需要连接同一集群
- 需要灵活添加/移除客户端
使用示例 #
# 默认配置(节点客户端)
client.type: node
# 使用传输客户端
client.type: transport
# 配置传输客户端连接地址
cluster.name: my-cluster
discovery.seed_hosts: ["192.168.1.10:9300", "192.168.1.11:9300"]
推荐设置建议 #
现代应用建议:使用 HTTP REST API 而非 Transport Client
使用 Node Client:
- 应用与 Easysearch 同机部署
- 需要极低延迟
- 长期运行的专用客户端
使用 Transport Client:
- 传统应用集成
- 需要二进制协议性能
- 与 HTTP REST API 相比有特殊需求
对比分析 #
| 特性 | Node Client | Transport Client | HTTP REST API |
|---|---|---|---|
| 资源消耗 | 高 | 中 | 低 |
| 网络开销 | 低(本地执行) | 中 | 中 |
| 部署灵活性 | 低 | 中 | 高 |
| 版本兼容性 | 需版本一致 | 需版本一致 | 相对宽松 |
| 安全性 | 需要证书配置 | 需要证书配置 | 标准 HTTP 认证 |
| 推荐场景 | 同机部署 | 传统应用 | 现代应用 |
代码示例 #
Java Transport Client 示例:
// 创建传输客户端(已弃用,仅供参考)
Settings settings = Settings.builder()
.put("cluster.name", "my-cluster")
.put("client.type", "transport")
.build();
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(
new InetSocketTransportAddress(
InetAddress.getByName("localhost"), 9300
)
);
推荐:使用 REST High Level Client:
// 现代 REST 客户端(推荐)
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")
)
);
弃用说明 #
Transport Client 已弃用
从 Easysearch 7.x 开始,Transport Client 被标记为弃用。推荐使用:
- Java REST High Level Client:基于 HTTP,更易用
- Java API Client:新一代客户端,类型安全
迁移建议:
Transport Client → REST High Level Client / Java API Client
相关配置项 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
cluster.name | 集群名称 | - |
discovery.seed_hosts | 发现种子节点地址 | - |
client.transport.sniff | 是否嗅探其他节点 | false |
注意事项 #
- 静态配置:修改此配置需要重启节点
- 版本兼容性:Transport Client 需要与集群版本匹配
- 弃用警告:Transport Client 已弃用,新项目建议使用 REST API
- 网络配置:使用 Transport Client 需要开放传输端口(默认 9300)
- 安全认证:确保配置正确的安全认证信息





