注意:Transport Client 已被弃用,推荐使用 High Level REST Client。这些配置主要用于旧版客户端或特定场景。
配置项概述 #
client.transport.* 配置项组用于控制 Transport 客户端的行为,包括节点发现、连接验证、集群名称检查等功能。
| 配置项 | 默认值 | 说明 |
|---|---|---|
client.transport.ignore_cluster_name | false | 是否忽略集群名称验证 |
client.transport.nodes_sampler_interval | 5s | 节点采样间隔 |
client.transport.ping_timeout | 5s | 节点 ping 超时时间 |
client.transport.sniff | false | 是否启用节点嗅探功能 |
client.transport.ignore_cluster_name #
配置项作用 #
控制 Transport 客户端是否验证远程节点的集群名称。当设置为 false 时,客户端只会连接到与配置的集群名称匹配的节点。
默认值 #
false
配置格式 #
# 默认配置:验证集群名称
client.transport.ignore_cluster_name: false
# 忽略集群名称验证
client.transport.ignore_cluster_name: true
使用场景 #
默认配置(推荐):
client.transport.ignore_cluster_name: false
确保客户端只连接到正确的集群,避免误连接。
跨集群访问:
client.transport.ignore_cluster_name: true
允许连接到不同名称的集群,适用于监控或多集群管理场景。
client.transport.nodes_sampler_interval #
配置项作用 #
控制客户端定期采样已配置节点以发现可用节点的间隔时间。客户端会按此间隔检查节点状态,更新可用节点列表。
默认值 #
5s
取值范围 #
正数时间值 (如 1s, 5s, 10s, 1m)
配置格式 #
# 默认配置
client.transport.nodes_sampler_interval: 5s
# 更频繁的节点检测
client.transport.nodes_sampler_interval: 2s
# 减少检测频率
client.transport.nodes_sampler_interval: 30s
工作原理 #
┌─────────────────────────────────────────────────────────────────┐
│ 节点采样机制 │
└─────────────────────────────────────────────────────────────────┘
定时触发 (每 nodes_sampler_interval)
│
▼
采样已配置的节点
│
├── SimpleNodeSampler (sniff=false)
│ │
│ └── 只连接到用户显式添加的节点
│
└── SniffNodesSampler (sniff=true)
│
└── 从集群状态发现所有数据节点
推荐设置 #
| 场景 | 推荐值 | 说明 |
|---|---|---|
| 生产环境 | 5s | 默认配置,平衡及时性和开销 |
| 稳定网络 | 10s-30s | 减少不必要的采样 |
| 不稳定网络 | 2s-5s | 更快发现节点故障 |
| 开发测试 | 5s | 默认配置即可 |
client.transport.ping_timeout #
配置项作用 #
控制客户端 ping 节点以检测其可用性时的等待超时时间。如果在此时间内未收到响应,节点将被视为不可用。
默认值 #
5s
取值范围 #
正数时间值 (如 1s, 5s, 10s)
配置格式 #
# 默认配置
client.transport.ping_timeout: 5s
# 更快的超时(适用于本地网络)
client.transport.ping_timeout: 2s
# 更长的超时(适用于高延迟网络)
client.transport.ping_timeout: 10s
推荐设置 #
| 网络环境 | 推荐值 | 说明 |
|---|---|---|
| 本地网络 | 2s | 低延迟环境 |
| 局域网 | 5s | 默认配置 |
| 跨地域 | 10s | 高延迟环境 |
| 不稳定网络 | 10s-15s | 避免误判节点故障 |
client.transport.sniff #
配置项作用 #
控制是否启用节点嗅探功能。启用后,客户端会从已连接节点获取集群状态,自动发现并连接到集群中的所有数据节点。
默认值 #
false
配置格式 #
# 默认配置:禁用嗅探
client.transport.sniff: false
# 启用嗅探功能
client.transport.sniff: true
工作原理 #
┌─────────────────────────────────────────────────────────────────┐
│ 嗅探模式对比 │
└─────────────────────────────────────────────────────────────────┘
sniff: false (SimpleNodeSampler)
│
├── 用户配置: 192.168.1.10:9300
├── 用户配置: 192.168.1.11:9300
└── 只连接到显式配置的节点
sniff: true (SniffNodesSampler)
│
├── 用户配置: 192.168.1.10:9300
├── 自动发现: 192.168.1.11:9300
├── 自动发现: 192.168.1.12:9300
└── 自动发现: 192.168.1.13:9300
(从集群状态动态获取)
使用场景 #
禁用嗅探(推荐用于简单场景):
client.transport.sniff: false
- 客户端只连接到显式配置的节点
- 配置简单,行为可预测
- 适合节点数量固定的小型集群
启用嗅探(推荐用于生产环境):
client.transport.sniff: true
- 自动发现所有数据节点
- 节点增减时自动更新连接
- 提供更好的负载分发和故障转移
推荐设置指南 #
| 场景 | sniff 设置 | 说明 |
|---|---|---|
| 小型固定集群 | false | 配置简单,足够使用 |
| 大型动态集群 | true | 自动适应节点变化 |
| 生产环境 | true | 更高的可用性 |
| 测试环境 | false | 简化配置 |
完整配置示例 #
# easysearch.yml
# Transport 客户端配置
# 验证集群名称(默认)
client.transport.ignore_cluster_name: false
# 节点采样间隔
client.transport.nodes_sampler_interval: 5s
# Ping 超时时间
client.transport.ping_timeout: 5s
# 启用节点嗅探
client.transport.sniff: true
Java 客户端代码示例 #
// 创建 Transport Client
Settings settings = Settings.builder()
.put("cluster.name", "my-cluster")
.put("client.transport.ignore_cluster_name", false)
.put("client.transport.nodes_sampler_interval", "5s")
.put("client.transport.ping_timeout", "5s")
.put("client.transport.sniff", true)
.build();
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("192.168.1.10", 9300));
注意事项 #
- Transport Client 已弃用:推荐使用 High Level REST Client 替代
- 静态配置:修改这些配置需要重启客户端
- 嗅探功能:启用嗅探会增加网络开销,但提供更好的可用性
- 集群名称验证:生产环境建议保持验证,避免误连接
- 超时设置:应根据实际网络延迟调整 ping 超时时间





