ElasticSearchClientServiceImpl

文档中心 › 组件索引 › ElasticSearchClientServiceImpl

ElasticSearchClientServiceImpl Controller Service

类型全限定名:cn.org.acal.lynxus.elasticsearch.ElasticSearchClientServiceImpl

所属 Bundle:cn.org.acal.lynxus:lynxus-elasticsearch-client-service-nar:2.11.8

描述

使用 Elasticsearch(低级)REST 客户端访问 Elasticsearch 客户端的控制器服务。

标签

elasticsearchelasticsearch6elasticsearch7elasticsearch8client

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
HTTP Hosts托管 Elasticsearch 查询节点的 HTTP 主机的逗号分隔列表。 HTTP Hosts 应为有效的 URI,每个条目都包含协议、域名和端口。 例如 "https://elasticsearch1:9200, https://elasticsearch2:9200"。 请注意,Host 会作为请求头包含在请求中(通常包含域名和端口,例如 elasticsearch:9200)。
支持表达式语言:是(仅使用环境/系统变量求值)
Path Prefix设置 http 客户端使用的每个请求的路径前缀。例如,如果设置为「/my/path」,则任何客户端请求将变为「/my/path/」+ 端点。本质上,每个请求的
Authorization SchemeBASIC
  • None — 无授权方案。
  • PKI — 使用 PKI 证书的双向 TLS 授权方案。
  • Basic — 基本(Basic)授权方案。
  • API Key — API 密钥授权方案。
  • JWT — JWT 领域方案。
用于 Elasticsearch 可选身份验证的授权方案。
Username用于 XPack 安全性的用户名。
支持表达式语言:是(仅使用环境/系统变量求值)
Password用于 XPack 安全性的密码。
敏感属性:是
支持表达式语言:是(仅使用环境/系统变量求值)
API Key IDAPI 密钥的唯一标识符。
API Key编码的 API 密钥。
敏感属性:是
JWT Shared SecretJWT 领域共享秘密。
敏感属性:是
OAuth2 Access Token Provider控制器服务 API:
OAuth2AccessTokenProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
OAuth2 访问令牌提供程序用于为 Elasticsearch 提供不记名令牌授权的 JWT。
Run As User在 Elasticsearch 中模拟的用户名。
支持表达式语言:是(仅使用环境/系统变量求值)
SSL Context Service控制器服务 API:
SSLContextProvider
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
用于为 TLS/SSL 连接提供客户端证书信息的 SSL 上下文服务。此服务仅适用于 Elasticsearch 端点已通过 TLS/SSL 保护的情况。
Proxy Configuration Service控制器服务 API:
ProxyConfigurationService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定代理配置 Controller Service 来代理网络请求。
Connect Timeout5000控制尝试连接时发生超时之前的时间量(以毫秒为单位)。
Read Timeout60000控制等待响应时发生超时之前的时间量(以毫秒为单位)。
Character SetUTF-8用于解释 Elasticsearch 响应的字符集。
Suppress Null and Empty Valuesalways-suppress
  • 从不抑制 — 缺失(在 Schema 中定义但不在记录中)或值为 null/空的字段将作为 null/空值写出
  • 始终抑制 — 缺失(在 Schema 中定义但不在记录中)或值为 null/空的字段将不会写出
指定编写器应如何处理 null 和空字段(包括对象和数组)
Enable Compressionfalse
  • true
  • false
REST 客户端是否应使用 gzip 内容编码压缩请求并添加「Accept-Encoding: gzip」头以接收压缩响应
Send Meta Headertrue
  • true
  • false
是否发送描述运行时环境的「X-Elastic-Client-Meta」头。它包含类似于 User-Agent 中可找到的信息。使用单独的头允许
Strict Deprecationfalse
  • true
  • false
REST 客户端是否应返回包含至少一个警告标头的任何响应作为失败
Node SelectorANY
  • 任意 — 选择任意 Elasticsearch 节点来处理请求
  • 跳过专用主节点 — 跳过专用 Elasticsearch 主节点来处理请求
选择可以接收请求的Elasticsearch节点。 用于使请求远离专用的 Elasticsearch 主节点
嗅探集群节点false
  • true
  • 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 Interval5 mins集群嗅探器操作之间的间隔
Sniffer Request Timeout1 sec节点信息请求的集群嗅探器超时
Sniff on Failurefalse
  • true
  • false
启用故障时的嗅探,意味着在每次故障后,Elasticsearch 节点列表立即更新,而不是在下一次常规嗅探轮次更新
Sniffer Failure Delay1 minElasticsearch 请求失败与使用嗅探器更新可用集群节点之间的延迟

动态属性

动态属性允许用户自定义属性的名称与值。

名称值描述
要添加的请求头的名称头的值在 Elasticsearch 请求中将指定的属性名称/值添加为请求头。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

提供的 Service API

  • ElasticSearchClientService (cn.org.acal.lynxus-lynxus-elasticsearch-client-service-api-nar-2.11.8)

详细说明

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 错误。