python 上的 elasticsearch 提供未知的名称或服务

elasticsearch on python gives name or service not known

我在 url 上使用弹性 API 像 https://something.xyzw.eg/api/search/advance (not the real url). The API works fine on postman. Also the python code generated by postman works fine and returns results. However when using leasticsearch-dsl package 我不断得到:

Failed to establish a new connection: [Errno -2] Name or service not known)

这是我的代码,类似于 first example on documents:

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

client = Elasticsearch(host='https://something.xyzw.eg/api/search/advance')
s = Search(using=client)    
response = s.execute()

知道我做错了什么吗?


编辑:

显然 host 不应包含 url,而是主机名。但是,我无法控制 API 的位置。是否有解决方法让 elasticsearch 与 url 一起工作?

您能否尝试添加 port=443,就像您提到的文档中的示例之一 https://elasticsearch-py.readthedocs.io/en/v7.16.3/#tls-ssl-and-authentication 一样?

供参考:原来我使用的 API 实际上不是标准的 ElasticSearch,而是将我的请求代理到 ElasticSearch。因此,通过邮递员和 requests 包发送请求是可行的(因为请求已发送到 Elastic),但 elasticsearch-py 无法连接到它(因为我尝试连接的路由实际上不是弹性本身)。