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
无法连接到它(因为我尝试连接的路由实际上不是弹性本身)。
我在 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
无法连接到它(因为我尝试连接的路由实际上不是弹性本身)。