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 保活

在 TCP 连接上设置保活选项。

对于桌面 CLR,设置 ServicePointManager.SetTcpKeepAlive

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

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

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

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

而不是在响应上遵循类似 c/go 的错误检查。 IsValid 在客户端上抛出一个异常(除非 SuccessOrKnownError 为 false),当调用导致客户端或 Elasticsearch 服务器上的异常时。

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

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

ElasticsearchClientSettings 与 ElasticsearchClient

编辑

这是一个使用客户端演示设置配置选项的示例。

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