elasticsearch-py
elasticsearch-py copied to clipboard
Feature: Support for proxy parameter in ElasticSearch client
Currently, there is no way to specify HTTP proxy urls for the ElasticSearch client to use when performing requests. Although issue #275 is marked as closed, there is no evidence of a solution implemented and supported by the client. We have tried to apply the recommended solutions, but none of the following have worked:
- Using
node_class="requests"ornode_class=RequestsHttpNodealong withHTTP_PROXYandHTTPS_PROXYenvironment variables set - Using a custom subclass of
RequestsHttpNodeto set the proxies at object construction
In both cases, requests were not performed through the given proxy URL.
We propose to the addition of a proxy parameter (or a proxy_http, proxy_https parameter set) to support the definition of a proxy to be used by a transport backend.
Scratching my head on this one as well. The urllib3 class was basically pieced together in this module and buried. Proxy settings are a standard feature w/ even the most basic web clients. Based on previous versions, it actually looks like it was removed. Was this on purpose?
Hello! Sorry for the delay here. Nothing was removed - in fact the Elasticsearch Python client never supported proxies out of the box. Since elasticsearch-py 8.x relies on https://github.com/elastic/elastic-transport-python/ the workaround has changed and is now https://github.com/elastic/elastic-transport-python/issues/53#issuecomment-1447903214.
I don't have immediate plans to add proxy support but the feature request makes sense so I'm leaving this open.
It seems clear that each version has evolved to make it harder to use a proxy through each iteration. This is like contemplating whether it's a good idea to add rear-view mirrors into a car.