首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Elasticsearch / Python / Proxy

Elasticsearch / Python / Proxy
EN

Stack Overflow用户
提问于 2015-09-25 08:45:11
回答 2查看 7.1K关注 0票数 11

我是新来的堆叠溢出,所以如果我犯了错误,我很抱歉。

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

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

以下代码在没有代理的情况下工作:

代码语言:javascript
运行
复制
es = Elasticsearch(['https://user:password@logs.net/elasticsearch'])
res = es.search(index=index, body=request, search_type="count")

当我在代理后面时,我尝试了以下几点:

代码语言:javascript
运行
复制
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,所以它使用代理?

任何帮助都会很好。

谢谢。

EN

Stack Overflow用户

发布于 2018-05-18 18:28:22

通常,我们不需要为代理添加额外的代码,python低级模块应该能够直接使用系统代理(即http_proxy)。

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

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
from elasticsearch import Elasticsearch
es = Elasticsearch(send_get_body_as='POST')
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32778235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档