Python elasticsearch客户端连接常见问题整理

python 访问 elasticsearch

在python语言中,我们一般使用 pip install elasticsearch 软件包,来访问es服务器。

正确用法

本地安装elasticsearch时,应指定与服务端相同的大版本号:

sh 复制代码
pip install elasticsearch==7.17.0

然后就可以正确创建ES客户端对象了。访问es服务端的代码格式,建议如下:

python 复制代码
from elasticsearch import Elasticsearch

es = Elasticsearch("http://username:password@host:port")

# 或者采用如下方式创建,一般用于es集群连接:
es = Elasticsearch(
    [{'host': "192.168.1.1", 'port': 9200, 'scheme': "http"}],
    http_auth=(username, password)
)

print(es.info())
print(es.ping()) # True or False

常见错误

使用 python elasticsearch 连接ES服务器过程,主要问题是客户端与服务端的版本不匹配。

1. 版本不一致

默认情况下,使用 pip install elasticsearch 安装的 es客户端版本是最新的8.17版。而ES服务端的版本是7。

当客户端与服务端的大版本不一致时,将会报错(UnsupportedProductError)。

2.缺少scheme

复制代码
TypeError: NodeConfig.__init__() 缺少 scheme

3.无法识别ES服务端

错误创建的客户端对象,无法访问和识别ES服务端。

客户端创建代码:

python 复制代码
es = Elasticsearch(
    [{'host': "192.168.1.1", 'port': 9200}],
    basic_auth=(username, password)
)

报错信息:

复制代码
ElasticsearchWarning: The client is unable to verify that the server is Elasticsearch due security privileges on the server side

4.http_auth 废弃

elasticsearch v7版本使用 http_auth 创建Elasticsearch客户端对象。而 v8版本废弃了http_auth,改用 basic_auth 或 bearer_auth。因此,当使用v8版本的elasticsearch客户端时,以下代码将报错:

python 复制代码
es = Elasticsearch(
    [{'host': "192.168.1.1", 'port': 9200}],
    http_auth=(username, password)
)

执行代码提示 es中的 http_auth已废弃:

复制代码
es the 'http_auth' parameter is deprecated, use 'basic_auth' or 'bearer_auth' instead

basic_auth 接受一个元组,包含你的用户名和密码,用法与v7的 http_auth相同。

bearer_auth 适用于使用Bearer令牌时(例如通过OAuth2获取的访问令牌)。

复制代码
bearer_auth='your_bearer_token'  # 替换为你的Bearer令牌
相关推荐
我的xiaodoujiao5 分钟前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
ID_180079054738 分钟前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
时空系32 分钟前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
Elastic 中国社区官方博客1 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
CHANG_THE_WORLD2 小时前
python 批量终止进程exe
开发语言·python
liann1192 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派2 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
我的xiaodoujiao3 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
身如柳絮随风扬3 小时前
深度解析 Elasticsearch 搜索服务:核心原理、架构与优化实践
大数据·elasticsearch·架构
多思考少编码4 小时前
PAT甲级真题1001 - 1005题详细题解(C++)(个人题解)
c++·python·最短路·pat·算法竞赛