Nodes ===== .. py:currentmodule:: elastic_transport Configuring nodes ----------------- .. autoclass:: elastic_transport::NodeConfig :members: Node classes ------------ .. autoclass:: Urllib3HttpNode :members: .. autoclass:: RequestsHttpNode :members: .. autoclass:: AiohttpHttpNode :members: .. autoclass:: HttpxAsyncHttpNode :members: Custom node classes ------------------- You can define your own node class like so: .. code-block:: python from typing import Optional from elastic_transport import Urllib3HttpNode, NodeConfig, ApiResponseMeta, HttpHeaders from elastic_transport.client_utils import DefaultType, DEFAULT class CustomHttpNode(Urllib3HttpNode): def perform_request( self, method: str, target: str, body: Optional[bytes] = None, headers: Optional[HttpHeaders] = None, request_timeout: Union[DefaultType, Optional[float]] = DEFAULT, ) -> Tuple[ApiResponseMeta, bytes]: # Define your HTTP request method here... and once you have a custom node class you can pass the class to :class:`elastic_transport.Transport` or an API client like so: .. code-block:: python # Example using a Transport instance: from elastic_transport import Transport transport = Transport(..., node_class=CustomHttpNode) # Example using an API client: from elasticsearch import Elasticsearch client = Elasticsearch(..., node_class=CustomHttpNode)