在 aws 中的弹性搜索中编制索引时出现连接错误
Connection error while indexing in Elastic search in aws
我想在我的使用中使用 aws 的弹性搜索。以下代码在我的本地弹性搜索中完全正常,但在尝试连接到 aws elasticsearch 服务时总是出错。我正在使用 python 2.7、django 1.10 和弹性搜索 5.1.1。
以下是错误
ConnectionError(HTTPSConnectionPool(host='https', port=443): 最大重试次数超过 url: //search-test-abc-jlpfzhi64qcrhhqxycov5rzgcq.ap-south-1.es.amazonaws.com/:443/ test-index/tweet/1(由 NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',)))引起:ConnectionError(HTTPSConnectionPool (host='https', port=443): 最大重试次数超过 url: //search-test-abc-jlpfzhi64qcrhhqxycov5rzgcq.ap-south-1.es.amazonaws.com/:443/test-index/tweet/1(由 NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',)))
此外,这是我正在使用的代码
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)
最后一行出错。我还完全访问了弹性搜索 url.
我终于明白了。在我的例子中,我将主机 url 写为“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)
我想在我的使用中使用 aws 的弹性搜索。以下代码在我的本地弹性搜索中完全正常,但在尝试连接到 aws elasticsearch 服务时总是出错。我正在使用 python 2.7、django 1.10 和弹性搜索 5.1.1。 以下是错误
ConnectionError(HTTPSConnectionPool(host='https', port=443): 最大重试次数超过 url: //search-test-abc-jlpfzhi64qcrhhqxycov5rzgcq.ap-south-1.es.amazonaws.com/:443/ test-index/tweet/1(由 NewConnectionError('此外,这是我正在使用的代码
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)
最后一行出错。我还完全访问了弹性搜索 url.
我终于明白了。在我的例子中,我将主机 url 写为“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)