使用Python对ES进行操作避坑指南

目前负责有一个数据迁移的项目,主要涉及Mysql,TiDB,ES等数据的批量迁移。

除了功能方面的质量保证之外,还需要考虑到对迁移数据库中大量表的校验,包括数据量,数据正确性(暂定抽样)等。

对数据库操作的自动化实现暂且不表,网上应该一搜一大堆。这里主要记录一下使用python对ES的一些操作。

 

1.首先确定使用pyton第三方库 elasticsearch

 

 

 注意:这里很重要,我就是在这边被坑了挺长时间。

在安装elasticsearch库之前,你首先要确定你的目标ES的当前版本,是6.XX, 7.XX还是8.XX,

然后在软件仓库里面找到对应的版本进行安装。否则会运行报错,且报错信息显示为ApiError(一脸懵)。

E elasticsearch.ApiError: ApiError(406, 'Content-Type header [application/vnd.elasticsearch+json; compatible-with=8] is not supported', 'Content-Type header [application/vnd.elasticsearch+json; compatible-with=8] is not supported')
C:\Users\PycharmProjects\pythonProject\venv\lib\site-packages\elasticsearch\_sync\client\_base.py:322: ApiError

比如我用的是6.XX版本,那我就选择elasticsearch6这个包。

 

 

2. ES连接

 1 clent = Elasticsearch(hosts="http://10.XX.XX.XX:XXXX", http_auth=("user", "psw"))
 2 # clent = Elasticsearch(hosts=["http://user:psw@10.XX.XX.XX:XXXX"])    # 网上看到的另一种写法,虽然短但不好阅读
 3 
 4 query = {
 5     "query": {
 6         "match_all": {}
 7     }
 8 }
 9 allDoc = clent.search(index="pay-orders-uat-template", body=query)
10 print(allDoc)

 

posted @ 2022-09-21 15:49  Jockey浩  阅读(2117)  评论(0编辑  收藏  举报