使用SSH隧道从django haystack连接到AWS ElasticSearch时出现问题
我有一个Django应用程序在EC2上运行,它可以使用以下使用SSH隧道从django haystack连接到AWS ElasticSearch时出现问题,django,
elasticsearch,django-haystack,Django,
elasticsearch,Django Haystack,我有一个Django应用程序在EC2上运行,它可以使用以下Django haystack配置连接到我的AWS ElasticSearch: HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 'URL': os.environ.get('ELASTICSEARCH_URL',
Django haystack
配置连接到我的AWS ElasticSearch:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': os.environ.get('ELASTICSEARCH_URL', 'http://elasticsearch').strip(),
'INDEX_NAME': 'my_index'
},
}
if 'es.amazonaws.com' in HAYSTACK_CONNECTIONS['default']['URL']:
HAYSTACK_CONNECTIONS['default']['KWARGS'] = {
'port': 443,
'http_auth': AWS4AuthEncodingFix(
os.environ.get('AWS_ACCESS_KEY_ID').strip(),
os.environ.get('AWS_SECRET_ACCESS_KEY').strip(),
os.environ.get('ELASTIC_SEARCH_AWS_REGION', 'us-east-1').strip(),
'es'),
'use_ssl': True,
'verify_certs': True,
'connection_class': RequestsHttpConnection,
}
这很好,但现在为了调试,我需要从本地开发机器连接到生产ElasticSearch
为此,我创建了一个SSH隧道:
ssh -v -N -L localhost:9200:${ELASTICSEARCH_ENDOINT}:443 -i my_secret_pem_file.pem ${EC2_USERNAME}@${EC2_IP}
debug1: Connection to port 9200 forwarding to ###REDACTED### port 443 requested.
从SSH日志中,我可以看到连接已建立,并且工作正常:
10:26 $ curl -k -X GET 'https://localhost:9200/_cat/indices?v'
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana-4 1 1 2 0 9.5kb 9.5kb
yellow open my_index 5 1 1150327 547242 2.2gb 2.2gb
(注意,我必须使用-k
和curl
绕过SSL验证,因为证书对于localhost
无效
为了从django haystack连接,我在上面的配置中添加了以下else
分支:
else:
HAYSTACK_CONNECTIONS['default']['KWARGS'] = {
'port': 9200,
'use_ssl': False,
'verify_certs': False,
}
当我启动Django应用程序并尝试执行搜索时,我看到SSH隧道上有一些活动:
ssh -v -N -L localhost:9200:${ELASTICSEARCH_ENDOINT}:443 -i my_secret_pem_file.pem ${EC2_USERNAME}@${EC2_IP}
debug1: Connection to port 9200 forwarding to ###REDACTED### port 443 requested.
但是,所有搜索都返回空结果集
我错过了什么
谢谢