Elasticsearch/Python/Proxy

meu*_*lth 8 python proxy elasticsearch

我是新的stackoverflow,所以,如果我犯了一个错误,对不起.

我必须编写一个python脚本,它使用Elasticsearch收集一些数据,然后将数据写入数据库.我正在努力用elasticsearch收集数据,因为我工作的公司背后是代理.

该脚本无需代理即可运行..但我不知道如何将代理设置传递给Elasticsearch.

以下代码无需代理即可运行:

es = Elasticsearch(['https://user:password@logs.net/elasticsearch'])
res = es.search(index=index, body=request, search_type="count")
Run Code Online (Sandbox Code Playgroud)

当我在代理后面时,我尝试了以下内容:

es = Elasticsearch(['https://user:password@logs.net/elasticsearch'], _proxy = 'http://proxy.org', _proxy_headers = {'basic_auth': 'user:pw'})
res = es.search(index=index, body=request, search_type="count")
return res
Run Code Online (Sandbox Code Playgroud)

有没有人知道我必须传递Elasticsearch的关键字,所以它使用代理?

你能帮忙的话,我会很高兴.

谢谢.

meu*_*lth 7

我在GitHub上得到了答案:

https://github.com/elastic/elasticsearch-py/issues/275#issuecomment-143781969

再次感谢你!

from elasticsearch import RequestsHttpConnection

class MyConnection(RequestsHttpConnection):
    def __init__(self, *args, **kwargs):
        proxies = kwargs.pop('proxies', {})
        super(MyConnection, self).__init__(*args, **kwargs)
        self.session.proxies = proxies

es = Elasticsearch([es_url], connection_class=MyConnection, proxies = {'https': 'http://user:pw@proxy.org:port'})


print(es.info())
Run Code Online (Sandbox Code Playgroud)