用于ElasticSearch的Python客户端8.5

ldfqzlk8  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(252)

我曾经使用以下代码连接elasticsearch 7自管理集群。

from elasticsearch import Elasticsearch,RequestsHttpConnection

es = Elasticsearch(['hostname'], timeout=1000,http_auth=('user_name', 'password'),use_ssl=True,verify_certs=True,connection_class=RequestsHttpConnection,scheme="https",port=9200)

将ElasticSearch更新到8.5后,大多数参数无效。需要帮助以找出在ElasticSearch8.5中连接弹性集群的正确方法。

byqmnocz

byqmnocz1#

在Elasticsearch 8.X中,Elasticsearch API有了显著的变化。
现在,在Elasticsearch 8.X中,schemeport需要作为主机名的一部分明确包含,例如scheme://hostname:port(https://localhost:9200)
应该将http_auth更新为basic_auth。您可以在此处查看所有其他可用选项。因此,要连接的新代码片段将类似于-

es = Elasticsearch(['https://hostname:port'], timeout=1000 ,basic_auth=('user_name', 'password'),verify_certs=True)

在执行查询时,请求/响应也有重大变化,因此我建议读取this
如果你正在从7.X迁移到elasticsearch 8.X,短期内,还有另一种解决方法,它不需要任何代码更改,只需要在python应用程序中设置ELASTIC_CLIENT_APIVERSIONING=1 env变量。

启用兼容模式并升级Elasticsearch

将您的Elasticsearch客户端升级到7.16:
$ python -m pip install --upgrade 'elasticsearch>=7.16,<8
如果您有现有的应用程序,请设定ELASTIC_CLIENT_APIVERSIONING=1环境变量来启用相容性模式。这会指示Elasticsearch服务器接受并回应与7.x相容的要求和回应。
https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/migration.html#migration-compat-mode

相关问题