使用Django Elasticsearch DSL如何连接EC2上的Elasticsearch服务?
解决方案
1. 配置Postgres数据库连接
你已经可以通过用户名、密码、主机地址及端口访问EC2实例,首先检查Django项目的数据库配置项是否正确,示例配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': '你的Postgres数据库名称', 'USER': 'Postgres登录用户名', 'PASSWORD': 'Postgres登录密码', 'HOST': 'EC2实例的IP地址(同你正常访问EC2的主机地址)', 'PORT': 'Postgres服务端口,默认值为5432', } }
同时确认两项EC2侧配置:
- EC2安全组入站规则开放你运行Django服务的IP对5432端口的访问权限
- Postgres服务的
pg_hba.conf配置允许你的访问IP接入,postgresql.conf的listen_addresses参数设置为*或者你的访问IP
2. 修正Django Elasticsearch DSL配置
如果你的Elasticsearch服务也部署在该EC2实例上,需要将默认的本地配置修改为EC2对应地址,带认证的配置示例如下:
ELASTICSEARCH_DSL={ 'default': { 'hosts': 'http://<EC2实例IP>:9200', 'http_auth': ('Elasticsearch用户名', 'Elasticsearch密码') }, }
如果Elasticsearch未开启身份认证,可以删除http_auth配置项。同时需要确认EC2安全组开放9200端口的对应IP访问权限。
3. 连接验证
- 验证Postgres连接:执行
python manage.py makemigrations命令,确认无数据库连接报错 - 验证Elasticsearch连接:执行
python manage.py search_index --create命令,确认可正常创建索引
内容的提问来源于stack exchange,提问作者Samarth Venkatesh Gowda
相关产品推荐
相关产品推荐

