ElasticSearchClientServiceImpl Controller Service
描述
使用 Elasticsearch(低级)REST 客户端访问 Elasticsearch 客户端的控制器服务。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| HTTP Hosts | | 托管 Elasticsearch 查询节点的 HTTP 主机的逗号分隔列表。
HTTP Hosts 应为有效的 URI,每个条目都包含协议、域名和端口。
例如 "https://elasticsearch1:9200, https://elasticsearch2:9200"。
请注意,Host 会作为请求头包含在请求中(通常包含域名和端口,例如 elasticsearch:9200)。
支持表达式语言:是(仅使用环境/系统变量求值) | |
| Path Prefix | | 设置 http 客户端使用的每个请求的路径前缀。例如,如果设置为「/my/path」,则任何客户端请求将变为「/my/path/」+ 端点。本质上,每个请求的 | |
| Authorization Scheme | BASIC |
| 用于 Elasticsearch 可选身份验证的授权方案。 |
| Username | | 用于 XPack 安全性的用户名。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Password | | 用于 XPack 安全性的密码。 敏感属性:是 支持表达式语言:是(仅使用环境/系统变量求值) | |
| API Key ID | | API 密钥的唯一标识符。 | |
| API Key | | 编码的 API 密钥。 敏感属性:是 | |
| JWT Shared Secret | | JWT 领域共享秘密。 敏感属性:是 | |
| OAuth2 Access Token Provider | | 控制器服务 API:OAuth2AccessTokenProvidercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | OAuth2 访问令牌提供程序用于为 Elasticsearch 提供不记名令牌授权的 JWT。 |
| Run As User | | 在 Elasticsearch 中模拟的用户名。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| SSL Context Service | | 控制器服务 API:SSLContextProvidercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于为 TLS/SSL 连接提供客户端证书信息的 SSL 上下文服务。此服务仅适用于 Elasticsearch 端点已通过 TLS/SSL 保护的情况。 |
| Proxy Configuration Service | | 控制器服务 API:ProxyConfigurationServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定代理配置 Controller Service 来代理网络请求。 |
| Connect Timeout | 5000 | 控制尝试连接时发生超时之前的时间量(以毫秒为单位)。 | |
| Read Timeout | 60000 | 控制等待响应时发生超时之前的时间量(以毫秒为单位)。 | |
| Character Set | UTF-8 | 用于解释 Elasticsearch 响应的字符集。 | |
| Suppress Null and Empty Values | always-suppress |
| 指定编写器应如何处理 null 和空字段(包括对象和数组) |
| Enable Compression | false |
| REST 客户端是否应使用 gzip 内容编码压缩请求并添加「Accept-Encoding: gzip」头以接收压缩响应 |
| Send Meta Header | true |
| 是否发送描述运行时环境的「X-Elastic-Client-Meta」头。它包含类似于 User-Agent 中可找到的信息。使用单独的头允许 |
| Strict Deprecation | false |
| REST 客户端是否应返回包含至少一个警告标头的任何响应作为失败 |
| Node Selector | ANY |
| 选择可以接收请求的Elasticsearch节点。 用于使请求远离专用的 Elasticsearch 主节点 |
| 嗅探集群节点 | false |
| 通过 Elasticsearch 节点信息 API 定期嗅探 Elasticsearch 集群中的节点。如果启用了 Elasticsearch 安全功能(8.x+ 默认为 "true"),Elasticsearch 用户必须拥有 "monitor" 或 "manage" 集群权限才能使用此 API。请注意,所有 HTTP Hosts(以及可能通过嗅探器在集群内发现的节点)必须使用相同的协议,例如 http 或 https,并且可使用相同的客户端设置进行联系。最后,Elasticsearch 的 "network.publish_host" 必须与 "network.bind_host" 列表条目之一匹配,详情请参阅 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html |
| Sniffer Interval | 5 mins | 集群嗅探器操作之间的间隔 | |
| Sniffer Request Timeout | 1 sec | 节点信息请求的集群嗅探器超时 | |
| Sniff on Failure | false |
| 启用故障时的嗅探,意味着在每次故障后,Elasticsearch 节点列表立即更新,而不是在下一次常规嗅探轮次更新 |
| Sniffer Failure Delay | 1 min | Elasticsearch 请求失败与使用嗅探器更新可用集群节点之间的延迟 |
动态属性
| 名称 | 值 | 描述 |
|---|---|---|
| 要添加的请求头的名称 | 头的值 | 在 Elasticsearch 请求中将指定的属性名称/值添加为请求头。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
提供的 Service API
ElasticSearchClientService
详细说明
ElasticSearchClientServiceImpl
嗅探(Sniffing)
Elasticsearch Sniffer 可用于定位你所连接的集群中的 Elasticsearch 节点。 如果集群会随时间动态变化(例如为应对高负载而新增节点以维持性能), 这会很有帮助。
嗅探还可以在运行期间遇到连接失败时更新集群中的主机列表。要启用 "Sniff on Failure",必须同时启用 "Sniff Cluster Nodes"。
并非所有情况都适合使用嗅探,例如:
- Elasticsearch 位于负载均衡器之后,由它动态路由来自 Lynxus 的连接
- Elasticsearch 与 Lynxus 位于不同网络
有时可能还需要设置一些
Elasticsearch 网络高级设置,
例如 network.publish_host,以确保 Sniffer 发现的 HTTP 主机可被
Lynxus 访问。例如,Elasticsearch 可能使用了内网的 publish_host,
Lynxus 无法访问,此时应改用 Lynxus 能理解的地址/IP。可能还需要把
同样的地址加入 Elasticsearch 的 network.bind_host 列表。
更多最佳实践参见 Elasticsearch sniffing best practices: What, when, why, how。
资源使用注意事项
该 Elasticsearch 客户端依赖使用 Apache HTTP Async Client 的
RestClient。默认情况下,它会启动一个调度线程,以及连接管理器使用的
若干工作线程。工作线程的数量等于 Lynxus 主机上本地检测到的处理器/
核心数。因此,强烈建议每个远程 Elasticsearch 目标只创建一个该
Controller Service 实例,并让该 Controller Service 在流程中的所有
Elasticsearch Processor 之间共享。实例数量过多可能导致资源耗尽,
引发 OOM 错误。