# Transport classes

List of transport classes that can be used, simply import your choice and pass it to the constructor of `Elasticsearch` as connection_class. Note that the `RequestsHttpConnection` requires `requests` to be installed.

For example to use the `requests`-based connection just import it and use it:

    from elasticsearch import Elasticsearch, RequestsHttpConnection
    es = Elasticsearch(connection_class=RequestsHttpConnection)

The default connection class is based on `urllib3` which is more performant and lightweight than the optional `requests`-based class. Only use `RequestsHttpConnection` if you have need of any of `requests` advanced features like custom auth plugins etc.

## Product check on first request

Starting in v7.14.0 the client performs a required product check before the first API call is executed. This product check allows the client to establish that it’s communicating with a supported Elasticsearch cluster.

The product check requires a single HTTP request to the `info` API. In most cases this request will succeed quickly and then no further product check HTTP requests will be sent.

The product check will verify that the `X-Elastic-Product: Elasticsearch` HTTP header is being sent or if the `info` API indicates a supported distribution of Elasticsearch.

If the client detects that it’s not connected to a supported distribution of Elasticsearch the `UnsupportedProductError` exception will be raised. In previous versions of Elasticsearch the `info` API required additional permissions so if an authentication or authorization error is raised during the product check then an `ElasticsearchWarning` is raised and the client proceeds normally.

## Connection

class elasticsearch.connection.Connection(host='localhost', port=None, use_ssl=False, url_prefix='', timeout=10, headers=None, http_compress=None, cloud_id=None, api_key=None, opaque_id=None, meta_header=True, **kwargs)

  Class responsible for maintaining a connection to an Elasticsearch node. It holds persistent connection pool to it and it’s main interface (perform_request) is thread-safe.

  Also responsible for logging.

  Parameters

    - host – hostname of the node (default: localhost)

    - port – port to use (integer, default: 9200)

    - use_ssl – use ssl for the connection if True

    - url_prefix – optional url prefix for elasticsearch

    - timeout – default timeout in seconds (float, default: 10)

    - http_compress – Use gzip compression

    - cloud_id – The Cloud ID from ElasticCloud. Convenient way to connect to cloud instances.

    - opaque_id – Send this value in the ‘X-Opaque-Id’ HTTP header For tracing all requests made by this transport.

## Urllib3HttpConnection

class elasticsearch.connection.Urllib3HttpConnection(host='localhost', port=None, http_auth=None, use_ssl=False, verify_certs=<object object>, ssl_show_warn=<object object>, ca_certs=None, client_cert=None, client_key=None, ssl_version=None, ssl_assert_hostname=None, ssl_assert_fingerprint=None, maxsize=10, headers=None, ssl_context=None, http_compress=None, cloud_id=None, api_key=None, opaque_id=None, **kwargs)

  Default connection class using the urllib3 library and the http protocol.

  Parameters

    - host – hostname of the node (default: localhost)

    - port – port to use (integer, default: 9200)

    - url_prefix – optional url prefix for elasticsearch

    - timeout – default timeout in seconds (float, default: 10)

    - http_auth – optional http auth information as either ‘:’ separated string or a tuple

    - use_ssl – use ssl for the connection if True

    - verify_certs – whether to verify SSL certificates

    - ssl_show_warn – show warning when verify certs is disabled

    - ca_certs – optional path to CA bundle. See https://urllib3.readthedocs.io/en/latest/security.html#using-certifi-with-urllib3 for instructions how to get default set

    - client_cert – path to the file containing the private key and the certificate, or cert only if using client_key

    - client_key – path to the file containing the private key if using separate cert and key files (client_cert will contain only the cert)

    - ssl_version – version of the SSL protocol to use. Choices are: SSLv23 (default) SSLv2 SSLv3 TLSv1 (see `PROTOCOL_*` constants in the `ssl` module for exact options for your environment).

    - ssl_assert_hostname – use hostname verification if not False

    - ssl_assert_fingerprint – verify the supplied certificate fingerprint if not None

    - maxsize – the number of connections which will be kept open to this host. See https://urllib3.readthedocs.io/en/1.4/pools.html#api for more information.

    - headers – any custom http headers to be add to requests

    - http_compress – Use gzip compression

    - cloud_id – The Cloud ID from ElasticCloud. Convenient way to connect to cloud instances. Other host connection params will be ignored.

    - api_key – optional API Key authentication as either base64 encoded string or a tuple.

    - opaque_id – Send this value in the ‘X-Opaque-Id’ HTTP header For tracing all requests made by this transport.

## RequestsHttpConnection

class elasticsearch.connection.RequestsHttpConnection(host='localhost', port=None, http_auth=None, use_ssl=False, verify_certs=True, ssl_show_warn=True, ca_certs=None, client_cert=None, client_key=None, headers=None, http_compress=None, cloud_id=None, api_key=None, opaque_id=None, **kwargs)

  Connection using the requests library.

  Parameters

    - http_auth – optional http auth information as either ‘:’ separated string or a tuple. Any value will be passed into requests as auth.

    - use_ssl – use ssl for the connection if True

    - verify_certs – whether to verify SSL certificates

    - ssl_show_warn – show warning when verify certs is disabled

    - ca_certs – optional path to CA bundle. By default standard requests’ bundle will be used.

    - client_cert – path to the file containing the private key and the certificate, or cert only if using client_key

    - client_key – path to the file containing the private key if using separate cert and key files (client_cert will contain only the cert)

    - headers – any custom http headers to be add to requests

    - http_compress – Use gzip compression

    - cloud_id – The Cloud ID from ElasticCloud. Convenient way to connect to cloud instances. Other host connection params will be ignored.

    - api_key – optional API Key authentication as either base64 encoded string or a tuple.

    - opaque_id – Send this value in the ‘X-Opaque-Id’ HTTP header For tracing all requests made by this transport.