ElasticSearch-NEST -02Connecting (官网谷歌翻译)

配置选项(Connecting options)   使用Elasticsearch.Net和NEST连接到Elasticsearch很容易,但是您完全有可能想要更改默认的连接行为。低级客户端的ConnectionConfiguration上有许多配置选项,高级别客户端的ConnectionSettings上有许多配置选项,可用于控制客户端与Elasticsearch的交互方式。   ConnectionConfiguration上的选项   以下是ConnectionConfiguration上可用的连接配置选项的列表;由于ConnectionSettings是从ConnectionConfiguration派生的,因此这些选项可用于低级和高级客户端: ApiKeyAuthentication   与所有请求一起发送到Elasticsearch的Api密钥 BasicAuthentication   基本身份验证凭证,将所有请求发送到Elasticsearch ClientCertificate   使用X509Certificate对所有HTTP请求进行身份验证。您还可以使用ClientCertificates根据个人要求设置它们 ClientCertificates   使用以下证书对所有HTTP请求进行身份验证。您还可以使用ClientCertificates根据个人要求设置它们 ConnectionLimit   限制可以打开到端点的并发连接数。对于所有不基于System.Net.Http.CurlHandler的IConnection实现,默认值为80。对于基于System.Net.Http.CurlHandler的那些,默认为Environment.ProcessorCount。 对于桌面CLR,此设置将在创建ServicePoint对象时应用于ServicePointManager对象的DefaultConnectionLimit属性,从而影响默认的IConnection实现。 对于Core CLR,此设置适用于默认IConnection实现内HttpClient使用的HttpClientHandler实例上的MaxConnectionsPerServer属性。 DeadTimeout   设置节点被标记为失效时的默认失效超时因子。一些连接池可能使用固定超时,而另一些连接池则使用此因子并将其成倍增加 DisableAutomaticProxyDetection   禁用自动检测代理 DisableDirectStreaming   确保响应字节在ElasticsearchResponse <T>上始终可用   IMPORTANT   根据注册的序列化程序,这可能导致响应首先在内存中进行缓冲,从而可能影响性能。 DisableMetaHeader   默认情况下,禁用所有请求中包含的元标头。该标头包含有关客户端和运行时的轻量级信息。 DisablePing   第一次使用节点时或标记为已失效后第一次使用节点时,会向该节点发送超时时间很短的ping命令,以确保当节点仍然失效时,它会以最快的速度报告可能的。如果您希望在较慢的原始请求上失败,可以在此处全局禁用这些ping操作 EnableDebugMode   打开有助于调试的设置,例如DisableDirectStreaming()和PrettyJson(),以便可以检查原始请求和响应JSON。它还总是向服务器询问有关错误的完整堆栈跟踪 EnableHttpCompression   启用gzip压缩的请求和响应。 EnableHttpCompression   启用gzip压缩的请求和响应。   IMPORTANT   您需要在Elasticsearch上配置http压缩才能使用此功能   https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html   EnableHttpPipelining   允许请求通过管道传递。 http://en.wikipedia.org/wiki/HTTP_pipelining NOTE   为了使它正常工作,还必须在Elasticsearch中启用HTTP流水线。   EnableTcpKeepAlive   在TCP连接上设置keep-alive选项。   对于桌面CLR,设置ServicePointManager.SetTcpKeepAlive GlobalHeaders   标头的集合,将随每个请求一起发送。在您始终需要传递标头的情况下很有用,例如自定义身份验证标头 GlobalQueryStringParameters   查询字符串参数的集合,将随每个请求一起发送。在您始终需要传递参数的情况下很有用,例如API密钥。 IncludeServerStackTraceOnError   强制所有请求附加?error_trace = true querystring参数,导致Elasticsearch作为堆栈化异常的一部分返回堆栈跟踪。默认为false MaxDeadTimeout   设置可以将节点标记为失效的最长时间。 IConnectionPool的不同实现可以选择不同的默认值。 MaximumRetries   给定请求的最大重试次数 MaxRetryTimeout   限制总运行时间(包括重试),与RequestTimeout分开 如果未指定,则默认为RequestTimeout,其本身默认为60 NodePredicate   注册一个谓词以选择要在其上执行API调用的节点。请注意,嗅探请求会忽略此谓词,并且始终在所有节点上执行。当使用支持结点播种的IConnectionPool实现时,这将默认为从常规API调用中省略仅主节点。当使用静态或单节点连接池时,假定您实例化客户端所用的节点列表应全部保留。   OnRequestCompleted   注册一个Action <T>,当从Elasticsearch接收到响应时将调用它。这对于实现自定义日志记录很有用。可以通过多次调用来注册多个回调 OnRequestDataCreated   注册创建RequestData时调用的Action <T>。可以通过多次调用来注册多个回调 PingTimeout   设置ping请求的默认ping超时(以毫秒为单位),用于确定节点是否处于活动状态。 ping应该尽快失败。 PrettyJson   强制所有请求附加?pretty = true querystring参数,从而使Elasticsearch返回格式化的JSON。默认为false Proxy   如果您的连接必须通过代理,请使用此方法指定代理网址 RequestTimeout   设置对Elasticsearch的每个请求的默认超时(以毫秒为单位)。默认为60秒。   NOTE   您可以在此处将此值设置为较高的值,并在Elasticsearch一侧指定超时   ServerCertificateValidationCallback   注册一个ServerCertificateValidationCallback,每个终结点都会调用它,直到返回true。在此回调返回true之后,将在该主机的ServiceEndpoint的生存期内对终结点进行验证。 SkipDeserializationForStatusCodes   配置客户端以跳过某些状态代码的反序列化,例如:您在代理后面运行Elasticsearch,该代理返回401、500的HTML SniffLifeSpan    设置持续时间,在此持续时间之前,群集状态被认为是陈旧的,应再次执行嗅探。 IConnectionPool必须发信号表示它支持重新播种,否则嗅探将永远不会发生。默认为1小时。设置为null可完全禁用。嗅探只会发生在对SupportsReseeding返回true的ConnectionPools上 SniffOnConnectionFault   如果连接池支持重新播种,则在呼叫失败时启用群集的重新嗅探。默认为true SniffOnStartup   如果连接池支持重新播种,则在该连接池的首次使用时启用嗅探功能。默认为true ThrowExceptions   当调用在客户端或Elasticsearch服务器上导致异常时,在客户端上不执行c / go之类的错误检查。IsValid确实会在客户端上引发异常(SuccessOrKnownError为false时除外)。   出现此类异常的原因可能是搜索解析器错误,索引缺失异常等... TransferEncodingChunked   是否应使用分块的传输编码发送请求。默认为假 UserAgent   与请求一起发送的用户代理字符串。对于调试目的有用,有助于了解启动对Elasticsearch的请求的客户端和框架版本   带有ElasticLowLevelClient的ConnectionConfiguration(ConnectionConfiguration with ElasticLowLevelClientedit)     这是演示使用低级客户端设置几个配置选项的示例
var connectionConfiguration = new ConnectionConfiguration() .DisableAutomaticProxyDetection() .EnableHttpCompression() .DisableDirectStreaming() .PrettyJson() .RequestTimeout(TimeSpan.FromMinutes(2));   var lowLevelClient = new ElasticLowLevelClient(connectionConfiguration);
  ConnectionSettings上的选项(Options on ConnectionSettings)   以下是ConnectionSettings上可用的连接配置选项的列表:   DefaultDisableIdInference   禁用给定CLR类型的自动ID推断。 默认情况下,NEST将使用CLR类型上名为Id的属性的值作为_id发送给Elasticsearch。添加类型将针对该CLR类型禁用此行为。如果应该为所有CLR类型禁用ID推断,请使用DefaultDisableIdInference DefaultFieldNameInferrer   指定如何从CLR属性名称推断字段名称。 默认情况下,NEST骆驼保护套属性名称。例如,CLR属性EmailAddress将被推断为“ emailAddress” Elasticsearch文档字段名称 DefaultIndex   当未明确指定索引且未为请求指定的给定CLR类型指定默认索引时,用于请求的默认索引。 DefaultMappingFor   指定如何推断给定CLR类型的映射。映射可以推断给定CLR类型的索引,ID和关系名称,以及CLR属性的控件序列化行为。   使用ElasticClient的ConnectionSettings(ConnectionSettings with ElasticClient)   这是一个示例,演示如何使用高级客户端设置几个配置选项
var connectionSettings = new ConnectionSettings() .DefaultMappingFor<Project>(i => i .IndexName("my-projects") .IdProperty(p => p.Name) ) .EnableDebugMode() .PrettyJson() .RequestTimeout(TimeSpan.FromMinutes(2));   var client = new ElasticClient(connectionSettings);
    NOTE   也可以直接在节点URI上指定基本身份验证凭据  
var uri = new Uri("http://username:password@localhost:9200"); var settings = new ConnectionConfiguration(uri);
    但这在具有多个节点的连接池中使用时可能会很尴尬,尤其是当所使用的连接池是能够自我播种的连接池时。因此,建议您在ConnectionSettings上指定凭据。        

上一篇:基于FPGA的数字跑表设计


下一篇:.net framework