【问题标题】:Elasticsearch / Python / Proxy弹性搜索/Python/代理
【发布时间】:2015-12-23 01:16:46
【问题描述】:

我是stackoverflow的新手,所以如果我犯了错误我很抱歉。

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

脚本在没有代理的情况下工作。但我不知道如何将代理设置传递给 Elasticsearch。

以下代码无需代理即可工作:

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

当我在代理后面时,我尝试了以下操作:

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

有谁知道我必须传递给 Elasticsearch 以便它使用代理的关键字?

任何帮助都会很好。

谢谢。

【问题讨论】:

    标签: python elasticsearch proxy


    【解决方案1】:

    我在 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())
    

    【讨论】:

      【解决方案2】:

      一般不需要额外添加代理代码,python低级模块应该可以直接使用系统代理(即http_proxy)。

      在以后的版本(至少 6.x)中,我们可以使用 requests 模块而不是 urllib3 很好地解决这个问题,请参阅 https://elasticsearch-py.readthedocs.io/en/master/transports.html

      # make sure the http_proxy is in system env
      from elasticsearch import Elasticsearch, RequestsHttpConnection
      es = Elasticsearch([es_url], connection_class=RequestsHttpConnection)
      

      另一个可能的问题是search默认使用GET方法,它被我的旧缓存服务器(squid/3.19)拒绝,需要添加额外的参数send_get_body_as,见https://elasticsearch-py.readthedocs.io/en/master/#environment-considerations

      from elasticsearch import Elasticsearch
      es = Elasticsearch(send_get_body_as='POST')
      

      【讨论】:

        猜你喜欢
        • 2014-08-19
        • 2019-11-08
        • 2021-11-23
        • 2021-07-13
        • 2015-08-09
        • 2018-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多