ElasticsearchClientSettings 的选项

编辑

ElasticsearchClientSettings 的选项

编辑

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

身份验证

描述用于与产品进行身份验证的 HTTP 标头的 IAuthenticationHeader 的实现。

`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 将被推断为 "emailAddress" Elasticsearch 文档字段名称。

默认索引
当未显式指定索引,且未为请求指定的给定 CLR 类型指定默认索引时,用于请求的默认索引。
默认映射对于
指定如何为给定的 CLR 类型推断映射。映射可以推断给定 CLR 类型的索引、ID 和关系名称,以及控制 CLR 属性的序列化行为。
禁用自动代理检测
禁用 Web 请求上的代理检测,在某些情况下,这可能会加快您的应用程序域进行的第一次连接,而在其他情况下,实际上会增加第一次连接的时间。没有万能药!请谨慎使用!
禁用直接流式传输
设置为 true 时,将禁用直接对请求和响应流进行 (反)序列化,并返回原始请求和响应的 byte[] 副本。默认为 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 如果调用导致客户端或 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);