本文主要是分享如何将db数据刷入到ES中,步骤非常的简单。 分为两步: 第一步是连接数据库,获取到要匹配的数据。 第二步是调用对应的写ES的接口。
导入第三方库
代码语言:javascript复制#导入第三方库
import pymysql
import requests
#数据配置定义的一个字典
ars3_dicts={
"HOST" : 'l-test.beta',
"PORT" : 3306,
"USER": 'test',
"PASSWORD" : 'test123',
"NAME":"entity_0"
}
执行sql方法
代码语言:javascript复制#执行sql方法
def executesql(query):
try:
conn = pymysql.connect(ars3_dicts['HOST'], ars3_dicts['USER'], ars3_dicts['PASSWORD'], ars3_dicts['NAME'], int(ars3_dicts['PORT']),charset='utf8')
cursor = conn.cursor()
cursor.execute(query)
result =cursor.fetchall()
print(result)
print("execute successfully!!!")
return list(result)
except Exception as e:
print(e)
print("execute failed")
finally:
cursor.close()
conn.close()
执行写ES的方法
代码语言:javascript复制#执行写ES的方法
def insertES():
sql="SELECT entity_id FROM entity_1.`entity_main_0`;" #从数据库中提供要的数据
alist=executesql(sql)
for i in range(len(alist)):
id=alist[i][0]
if(str(id).startswith("3")):
url="http://10.7.36.35:9092/api/profile/backdoor/refreshEsData?arsProfileIds=" str(id) #此处是由开发提供的接口
print(url)
response=requests.get(url)
print(response.text)
入口方法
代码语言:javascript复制#入口方法
if __name__ == '__main__':
inseertES()
请求后打印的信息如下图所示:
总结:当测试环境的db被另一个环境的db覆盖时,所对应的ES 里面的数据也是要同步进行覆盖的,本文是通过查询db中的数据,然后调用开发开放的接口进行的初始化,这样就可以保障页面检索的数据与db 是一致的。
友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。