无法获取aws elasticsearch的索引列表

时间:2018-07-02 13:43:15

标签: python elasticsearch indexing

我有这个python脚本:

from requests_aws4auth import AWS4Auth
from elasticsearch import Elasticsearch, RequestsHttpConnection

session = boto3.session.Session()
credentials = session.get_credentials()
awsauth = AWS4Auth(credentials.access_key,
         credentials.secret_key,
         session.region_name, 'es',
         session_token=credentials.token)



es_client = Elasticsearch(
                        "vpc-mydomain-elasticsearch-xxxxxxxxx.region.es.amazonaws.com:9200",
                        http_auth=awsauth,
                        use_ssl=False,
                        verify_certs=False,
                        connection_class=RequestsHttpConnection)

print(es_client.info())

运行脚本时出现此错误:

    raise ConnectionTimeout('TIMEOUT', str(e), e)
elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeout(HTTPConnectionPool(host='10.0.2.2', port=3128): Read timed out. (read timeout=10))

集群的安全组为90.0.0.0/0打开了端口9200。 ( 10.0.2.2是我的流浪者机器的IP地址,端口3128是cntlm的侦听端口) 如何获得这项工作?

编辑

我也尝试过,但是没用:

 curl -XGET https://vpc-mydomain-elasticsearch-xxxxxxxxx.region.es.amazonaws.com:9200/_cat/indices?v
curl: (56) Received HTTP code 403 from proxy after CONNECT

1 个答案:

答案 0 :(得分:0)

尝试以下解决方案:

  • 将默认超时时间10秒更改为request_timeout = n,其中n可以是大于10的数字,最好是30。如果错误仍然存​​在,则增加该数字。
  • 检查您的config / elasticsearch.yml以确保http.proxy变量指向正确的地址。
  • 尝试将端口从9200更改为443。
  • 将use_ssl更改为True。

希望这会有所帮助。