📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

注意:Transport Client 已被弃用,推荐使用 High Level REST Client。这些配置主要用于旧版客户端或特定场景。

配置项概述 #

client.transport.* 配置项组用于控制 Transport 客户端的行为,包括节点发现、连接验证、集群名称检查等功能。

配置项默认值说明
client.transport.ignore_cluster_namefalse是否忽略集群名称验证
client.transport.nodes_sampler_interval5s节点采样间隔
client.transport.ping_timeout5s节点 ping 超时时间
client.transport.snifffalse是否启用节点嗅探功能

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));

注意事项 #

  1. Transport Client 已弃用:推荐使用 High Level REST Client 替代
  2. 静态配置:修改这些配置需要重启客户端
  3. 嗅探功能:启用嗅探会增加网络开销,但提供更好的可用性
  4. 集群名称验证:生产环境建议保持验证,避免误连接
  5. 超时设置:应根据实际网络延迟调整 ping 超时时间