我的 Django 应用程序使用 elasticsearch 来索引多个资源。现在我想用密码保护我的elasticsearch实例,如果我使用“curl -u”左右,它就可以正常工作。无论如何,从这里找到的elasticsearch_dsl文档中: https: //elasticsearch-dsl.readthedocs.io/en/latest/configuration.html,我不明白我必须做什么才能以使用密码的方式设置elasticsearch为了进行身份验证,我必须将该代码放在哪里?!是smb。也许可以向我展示他的一些配置片段?
我现在的状态是这样的:
设置.py
ELASTICSEARCH_DSL = {
'default': {
'hosts': env.str('ELASTICSEARCH_HOST') + str(':') + env.str('ELASTICSEARCH_PORT'),
},
}
ELASTICSEARCH_DSL_SIGNAL_PROCESSOR = 'django_elasticsearch_dsl.signals.RealTimeSignalProcessor'
Run Code Online (Sandbox Code Playgroud)
文档.py
from django_elasticsearch_dsl import Document, Index, fields
from elasticsearch_dsl import analyzer
from App.models import Post
# elasticsearch index
posts = Index('posts')
html_strip = analyzer(
'html_strip',
tokenizer="standard",
filter=["lowercase", "stop", "snowball"],
char_filter=["html_strip"]
)
@posts.document
class PostDocument(Document):
... more index stuff
Run Code Online (Sandbox Code Playgroud)
根据文档,我必须手动设置默认客户端连接,在其中我还可以传递密码和用户名进行身份验证,这在我看来目前在 settings.py 中是不可能的。
亲切的问候
您可以将elasticsearch URL传递为
from urllib.parse import quote_plus as urlquote
elk_base_url = 'elasticsearch://{user_name}:{password}@{host_ip}:{host_port}'
elastic_search_url = elk_base_url.format(user_name='my_username',
password=urlquote('mysecret_password'),
# password may contain special characters
host_ip='my-elastic-host-ip',
host_port=9200)
ELASTICSEARCH_DSL = {
'default': {
'hosts': [elastic_search_url]
},
}Run Code Online (Sandbox Code Playgroud)
该解决方案已经在以下情况下进行了测试
如果您遇到AuthenticationException(401, '')异常,则意味着您提供了错误的凭据。请检查 的值elastic_search_url并确保这些值正确。
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |