elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" />

使用SSH隧道从django haystack连接到AWS ElasticSearch时出现问题

使用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应用程序在EC2上运行,它可以使用以下
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.
但是,所有搜索都返回空结果集

我错过了什么

谢谢