使用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)
最懒的人就是整天忙得没时间学习、反思、成长的人。