Python 刷db数据入ElasticSearch

2022-07-04 17:45:53 浏览数 (1)

本文主要是分享如何将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 是一致的。

友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

es

0 人点赞