ValueError:URL 必须包含“方案”、“主机”和“端口”组件

问题描述 投票:0回答:2

尝试在项目中使用弹性搜索。

from elasticsearch import Elasticsearch
es = Elasticsearch(
    "https://example.com",
    http_auth=("abc", "bcd"),
)

但出现错误:

ValueError: URL must include a 'scheme', 'host', and 'port' component (ie 'https://localhost:9200')

我在 Pycharm CE 上运行它并创建了 Python 3.9 的虚拟环境。 我应该使用不同版本的 Python 来完成这项工作吗? 而且,我已经尝试过

pip install acryl-datahub[datahub-rest,elasticsearch]==0.8.27.1
但没有成功。

elasticsearch pycharm
2个回答
7
投票

我面临着同样的错误。安装ES 7.17版本解决了这个问题。我还发现

pip install acryl-datahub[datahub-rest,elasticsearch]==0.8.27.1
上不可用。尝试使用下一个可用版本 (0.8.28.0),并意识到它正在降级
elasticsearch
至 7.17。

所以尝试

pip install elasticsearch==7.17


0
投票

settings.py 中使用这些代码行帮助我避免了这个错误。

ELK_BASE_URL = 'elasticsearch://{username}:{password}@{host_ip}:{host_port}'
ELASTIC_SEARCH_URL = ELK_BASE_URL.format(
    username='ELASTICSEARCH_USER',
    password='ELASTICSEARCH_PASS',
    host_ip='localhost',
    host_port='9200'
)
    
ELASTICSEARCH_DSL = {
    'default': {
        'hosts': [ELASTIC_SEARCH_URL]
    },
}

或者您可以只使用:

ELASTICSEARCH_DSL = {
        'default': {
            'hosts': 'http://localhost:9200'
        },
}
© www.soinside.com 2019 - 2024. All rights reserved.