ElasticsearchClientSettings 上的选项

编辑

ElasticsearchClientSettings 上的选项编辑

以下是 ElasticsearchClientSettings 上可用的连接配置选项列表

身份验证

IAuthenticationHeader 的实现,描述了用于向产品进行身份验证的 http 标头。

`BasicAuthentication` for basic authentication
`ApiKey` for simple secret token
`Base64ApiKey` for Elastic Cloud style encoded api keys
客户端证书
使用以下证书对所有 HTTP 请求进行身份验证。您也可以使用 ClientCertificates 在单个请求上设置它们。
客户端证书
使用以下证书对所有 HTTP 请求进行身份验证。您也可以使用 ClientCertificates 在单个请求上设置它们。
连接限制

限制可以打开到端点的并发连接数。默认为 80(请参阅 DefaultConnectionLimit)。

对于桌面 CLR,此设置适用于创建 ServicePoint 对象时 ServicePointManager 对象上的 DefaultConnectionLimit 属性,影响默认的 IConnection 实现。

对于 Core CLR,此设置适用于默认 IConnection 实现内部 HttpClient 使用的 HttpClientHandler 实例上的 MaxConnectionsPerServer 属性。

死节点超时
将死节点从轮换中移除的时间(这将乘以它们已死机的次数)。
默认禁用 ID 推断

为给定的 CLR 类型禁用自动 ID 推断。

默认情况下,客户端将使用 CLR 类型上名为 Id 的属性的值作为要发送到 Elasticsearch 的 _id。添加类型将禁用该 CLR 类型的此行为。如果要为所有 CLR 类型禁用 Id 推断,请使用 DefaultDisableIdInference

默认字段名推断器

指定如何从 CLR 属性名称推断字段名称。

默认情况下,客户端会将属性名称转换为驼峰式大小写。例如,CLR 属性 EmailAddress 将被推断为 Elasticsearch 文档字段名称“emailAddress”。

默认索引
当未显式指定索引且未为请求指定的给定 CLR 类型指定默认索引时,用于请求的默认索引。
默认映射
指定如何为给定的 CLR 类型推断映射。映射可以推断给定 CLR 类型的索引、ID 和关系名称,以及控制 CLR 属性的序列化行为。
禁用自动代理检测
在 webrequest 上禁用代理检测,在某些情况下,这可能会加快您的应用程序域进行的第一个连接的速度,但在其他情况下,它实际上会增加第一个连接的时间。没有灵丹妙药!谨慎使用!
禁用直接流式传输
设置为 true 时,将禁用直接对请求和响应流进行(反)序列化,并返回原始请求和响应的字节数组副本。默认为 false。
禁用 Ping
这表示我们不想向未知/先前已死的节点发送初始 ping,而只是直接发送调用。
DNS 刷新超时
连接的 DNS 刷新超时。默认为 5 分钟。
启用调试模式
打开有助于调试的设置,例如 DisableDirectStreaming()PrettyJson(),以便可以检查原始请求和响应 JSON。它还始终在出错时向服务器请求完整的堆栈跟踪。
启用 HTTP 压缩
启用 gzip 压缩的请求和响应。
启用 HTTP 流水线
是否启用 HTTP 流水线。默认为 true
启用 TCP KeepAlive

在 TCP 连接上设置 keep-alive 选项。

对于桌面 CLR,设置 ServicePointManager.SetTcpKeepAlive

启用 TCP 统计信息
启用在发出请求时收集有关 TCP 连接的统计信息。
全局标头
尝试为每个请求发送这些标头。
全局查询字符串参数
自动将这些查询字符串参数附加到每个请求。
最大死节点超时
允许将节点标记为死机的最长时间。
最大重试次数
当发生可重试的异常或返回状态代码时,这将控制我们应该重试调用 Elasticsearch 的最大次数。
最大重试超时
限制总运行时(包括重试),与 RequestTimeout 分开。未指定时,默认为 RequestTimeout,其本身默认为 60 秒。
内存流工厂
提供内存流工厂。
节点谓词
注册一个谓词以选择要在其上执行 API 调用的节点。请注意,嗅探请求会忽略此谓词,并始终在所有节点上执行。当使用支持节点重新播种的 IConnectionPool 实现时,这将默认为从常规 API 调用中省略仅主节点。当使用静态或单节点连接池时,假定您实例化客户端的节点列表应按字面意思使用。
请求完成时
允许您在每次 API 调用返回时注册回调。
请求数据创建时
在为请求创建 RequestData 时要运行的操作。
Ping 超时
用于 ping 请求的超时时间(以毫秒为单位),用于确定节点是否处于活动状态。
格式化 JSON

向序列化程序和产品提供提示,以生成格式良好、未缩小的 JSON。

注意:这并不能保证您始终会获得格式化的 JSON。

代理
如果您的连接必须通过代理,请使用此方法指定代理 URL。
请求超时
每个 Elasticsearch 请求的超时时间(以毫秒为单位)。
服务器证书验证回调
为每个请求注册 ServerCertificateValidationCallback
跳过状态代码的反序列化
将客户端配置为跳过某些状态代码的反序列化,例如,您在返回意外 JSON 格式的代理后面运行 Elasticsearch。
嗅探生命周期
当集群状态信息早于指定的时间跨度时,强制对集群进行新的嗅探。
连接故障时嗅探
每次连接断开时,强制对集群状态进行新的嗅探。
启动时嗅探
在启动时立即嗅探集群状态。
抛出异常

不要在 response.IsValid 上进行类似 c/go 的错误检查,而是在调用导致客户端或 Elasticsearch 服务器上出现异常时在客户端上抛出异常(除非 SuccessOrKnownError 为 false)。

此类异常的原因可能是搜索解析器错误、索引丢失异常等。

分块传输编码
请求是否应使用分块传输编码发送。
用户代理
随请求一起发送的用户代理字符串。对于调试目的,了解向 Elasticsearch 发起请求的客户端和框架版本很有用。

ElasticsearchClient 的 ElasticsearchClientSettings编辑

以下示例演示了如何使用客户端设置配置选项。

var settings= new ElasticsearchClientSettings()
    .DefaultMappingFor<Project>(i => i
        .IndexName("my-projects")
        .IdProperty(p => p.Name)
    )
    .EnableDebugMode()
    .PrettyJson()
    .RequestTimeout(TimeSpan.FromMinutes(2));

var client = new ElasticsearchClient(settings);