如何在Python中使用域名进行Elasticsearch连接

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

我们已经使用 kubernetes 部署了 Elasticsearch(8.3),Elasticseach 的入口定义为

https://elasticsearch.url.com/es
,但是当我使用 Python elasticsearch 包连接到 Elasticsearch 时,出现以下错误:

注意:我已经尝试提供端口号(

https://elasticsearch.url.com:9200/es/
)但仍然没有成功。

ValueError:URL 必须包含“方案”、“主机”和“端口”组件(即“https://localhost:9200”)

我使用以下代码进行连接:

from elasticsearch import Elasticsearch
client = Elasticsearch(
    ["https://elasticsearch.url.com/es/"],
    http_auth=('username', 'password')
)

请帮我解决这个问题。

elasticsearch elastic-stack kubernetes-ingress
2个回答
0
投票

客户期望类似

https://elasticsearch.url.com:9200/
的内容,因为最后一个
/
之后的任何内容都被视为某种路径/操作,例如
_search
或索引名称,以便 Elasticsearch 然后根据该上下文执行某些操作

您可能需要删除 url 的尾部

es
部分,然后您可以使用 https://elasticsearch.url.com:80/`(假设入口端口 80 重定向到 Elasticsearch 的端口 9200)


0
投票

但这种选择并不总是可行。我的弹性暴露在 apache 保留代理下的 kubernetes 入口控制器下,使用如下子路径:

https://[HOST]/kubernetes/elastic

我使用curl或postman执行我的请求没有任何问题。 python 库是否强制我必须在根子文件夹下公开我的弹性?

© www.soinside.com 2019 - 2024. All rights reserved.