在 aws 的 Elastic 搜索中建立索引时出现连接错误

问题描述 投票:0回答:2

我想使用 aws 的弹性搜索来供我使用。以下代码在我的本地弹性搜索中工作完全正常,但在尝试连接到 aws elasticsearch 服务时总是给出错误。我正在使用 python 2.7、django 1.10 和弹性搜索 5.1.1。 以下是错误

ConnectionError(HTTPSConnectionPool(主机='https',端口=443):超过最大重试次数,网址://search-test-abc-jlpfzhi64qcrhhqxycov5rzgcq.ap-south-1.es.amazonaws.com/:443/test-index/ tweet/1 (由 NewConnectionError(': 无法建立新连接: [Errno -2] 名称或服务未知',))) 引起:ConnectionError(HTTPSConnectionPool(host='https', port=443) :超过最大重试次数,网址为: //search-test-abc-jlpfzhi64qcrhhqxycov5rzgcq.ap-south-1.es.amazonaws.com/:443/test-index/tweet/1 (由 NewConnectionError(': 无法建立新连接:[Errno -2] 名称或服务未知',)))

另外,这是我正在使用的代码

host = AWS_ELASTIC_SEARCH_URL
awsauth = AWS4Auth(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_ELASTIC_SEARCH_REGION, 'es')

es = Elasticsearch(
    hosts=[{'host': host, 'port': 443}],
    http_auth=awsauth,
    use_ssl=True,
    verify_certs=True,
    connection_class=elasticsearch.RequestsHttpConnection
)

doc = {
'author': 'kimchy',
'text': 'Elasticsearch: cool. bonsai cool.',
'timestamp': datetime.now(),
}
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)

最后一行出现错误。我还完全访问了弹性搜索网址。

django python-2.7 amazon-web-services elasticsearch django-haystack
2个回答
4
投票

我终于明白了。就我而言,我将主机网址写为“https://example.com/”,但它应该仅指定为“example.com”。我花了很长时间才想到这一点。以下是我使用 python 2.7 和 django 1.9 连接到 aws ElasticSearch (5.1) 的工作代码。

def bulk_indexing():

     host = 'example.com'  #not https://example.com"
     awsauth = AWS4Auth('access key', 'secret', region, 'es')
     es = Elasticsearch(
         hosts=[{'host': host, 'port': 443}],
         http_auth=awsauth,
         use_ssl=True,
         verify_certs=True,
         connection_class=RequestsHttpConnection
     )
     payload = {'abc' : 'def'}
     es.index('abc-index', 'doc', payload)

0
投票

ConnectionError(HTTPSConnectionPool(host ='qa43g2l2a1mw4vt481a3.aoss.amazonaws.com',port = 443):超过最大重试次数,网址:/oscars-index/_search(由NewConnectionError(':无法建立新连接:[ Errno -2] 名称或服务未知'))) 原因如下: ConnectionError(HTTPSConnectionPool(host='qa43g2l2a1mw4vt481a3.aoss.amazonaws.com', port=443): 超过最大重试次数,网址:/oscars-index/_search (由 NewConnectionError(': 无法建立新连接: [Errno -2] 名称或服务未知')))

引起

我遇到了同样的错误,但在 opensearch 无服务器中,即使我以“example.com”格式给出了主机。有什么解决办法吗?

当我在 .ipynb 文件中使用 Opensearch Serverless 服务时,它工作得绝对正常,但如果我在 .py 文件上运行它,则会出现上述错误。

host = "host.aoss.amazonaws.com"
region = "us-east-1"
service = "aoss"
credentials = boto3.Session().get_credentials()
auth = AWSV4SignerAuth(credentials, region, service)

os_client = OpenSearch(
    hosts = [{"host": host, "port": 443}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    pool_maxsize = 20
)
© www.soinside.com 2019 - 2024. All rights reserved.