Python操作ES的方式及与Mysql数据同步的方法
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Python操作ES的方式及与Mysql数据同步的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python操作ES的方式及与Mysql数据同步的方
千家信息网最后更新 2026年11月03日Python操作ES的方式及与Mysql数据同步的方法
这篇文章主要介绍了Python操作ES的方式及与Mysql数据同步的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python操作ES的方式及与Mysql数据同步的方法文章都会有所收获,下面我们一起来看看吧。
Python操作Elasticsearch的两种方式
# 官方提供的:Elasticsearch# pip install elasticsearch# GUI:pyhon能做图形化界面编程吗? -Tkinter -pyqt# 使用(查询是重点)# pip3 install elasticsearchhttps://github.com/elastic/elasticsearch-pyfrom elasticsearch import Elasticsearchobj = Elasticsearch(['127.0.0.1:9200','192.168.1.1:9200','192.168.1.2:9200'],)# 创建索引(Index)# body:用来干什么?mapping:{},setting:{}# result = obj.indices.create(index='user',ignore=400)# print(result)# 删除索引# result = obj.indices.delete(index='user', ignore=[400, 404])# 插入和查询数据(文档的增删查改),是最重要# 插入数据# POST news/politics/1# {'userid': '1', 'username': 'lqz','password':'123'}# data = {'userid': '1', 'username': 'lqz','password':'123'}# result = obj.create(index='news', doc_type='politics', id=1, body=data)# print(result)# 更新数据'''不用doc包裹会报错ActionRequestValidationException[Validation Failed: 1: script or doc is missing'''# data ={'doc':{'userid': '1', 'username': 'lqz','password':'123ee','test':'test'}}# result = obj.update(index='news', doc_type='politics', body=data, id=1)# print(result)# 删除数据# result = obj.delete(index='news', doc_type='politics', id=1)# 查询# 查找所有文档# query = {'query': {'match_all': {}}}# 查找名字叫做jack的所有文档# query = {'query': {'match': {'desc': '娇憨可爱'}}}# query = {'query': {'term': {'from': 'sheng'}}}query = {'query': {'term': {'name': '娘子'}}}# term和match的区别# term是短语查询,不会对term的东西进行分词# match 会多match的东西进行分词,再去查询# 查找年龄大于11的所有文档# allDoc = obj.search(index='lqz', doc_type='doc', body=query)allDoc = obj.search(index='lqz', doc_type='doc', body=query)print(allDoc)import jsonprint(json.dumps(allDoc))# print(allDoc['hits']['hits'][0]['_source'])# 如何集成到django项目中:创建索引,提前创建好就行了# 插入数据,查询数据,修改数据# query = {'query': {'term': {'name': '娘子'}}}# allDoc = obj.search(index='lqz', doc_type='doc', body=query)# json格式直接返回# saas :软件即服务,不是用人家服务,而是写服务给别人用----》正常的开发# 舆情监测系统:(爬虫)# 只监控微博---》宜家:微博,百度贴吧,上市公司# 公安:负面的,---》追踪到哪个用户发的---》找上门了# qq群,微信群----》舆情监控(第三方做不了,腾讯出的舆情监控,第三方机构跟腾讯合作,腾讯提供接口,第三方公司做)# 平台开发出来,别人买服务---》买一年的微博关键字监控ERP:公司财务,供应链
某个大公司,金蝶,用友,开发了软件----》你们公司自己买服务器---》软件跑在你服务器上
saas模式:公司买服务,10年服务----》账号密码---》登进去就能操作---》出了问题找用友---》服务器在别人那---》政务云,各种云---所有东西上云
---政府花钱买的东西---》用友敢泄露吗?
---未来的云计算---》只能能上网---》计算机运算能力有限---》上云买服务---》计算1+。。。+100 ---》买了计算服务,直接拿到结果
# 第二种使用方式# https://github.com/elastic/elasticsearch-dsl-py# pip3 install elasticsearch-dslfrom datetime import datetimefrom elasticsearch_dsl import Document, Date, Nested, Boolean,analyzer, InnerDoc, Completion, Keyword, Text,Integerfrom elasticsearch_dsl.connections import connectionsconnections.create_connection(hosts=["localhost"])class Article(Document): title = Text(analyzer='ik_max_word', search_analyzer="ik_max_word", fields={'title': Keyword()}) author = Text() class Index: name = 'myindex' # 索引名 def save(self, ** kwargs): return super(Article, self).save(** kwargs)if __name__ == '__main__': # Article.init() # 创建映射 # 保存数据 # article = Article() # article.title = "测试数据" # article.author = "egon" # article.save() # 数据就保存了 #查询数据 # s=Article.search() # s = s.filter('match', title="测试") # results = s.execute() # # 类比queryset对象,列表中一个个对象 # # es中叫Response,当成一个列表,列表中放一个个对象 # print(results) #删除数据 # s = Article.search() # s = s.filter('match', title="测试").delete() #修改数据 s = Article().search() s = s.filter('match', title="测试") results = s.execute() print(results[0]) results[0].title="xxx" results[0].save() # 其他操作,参见文档mysql和Elasticsearch同步数据
# 只要article表插入一条数据,就自动同步到es中# 第一种方案: -每当aritcle表插入一条数据(视图类中,Article.objects.create(),update) -往es中插入一条 -缺陷:代码耦合度高,改好多地方# 第二种方案: -重写create方法,重写update方法 -缺陷:同步操作---》es中插入必须返回结果才能继续往下走# 第三种方案: -用celery,做异步 -缺陷:引入celery,还得有消息队列。。。# 第四种方案:(用的最多) -重写create方法,重写update方法,用信号存入,异步操作 -缺陷:有代码侵入# 第五种方案:(项目不写代码,自动同步),第三方开源的插件 -https://github.com/siddontang/go-mysql-elasticsearch----go写 -你可以用python重写一个,放到git上给别人用(读了mysql的日志) -跟平台无关,跟语言无关 -如何使用: -源码下载---》交叉编译---》可执行文件--》运行起来--》配置文件配好,就完事了 # 配置文件 [[source]] schema = "数据库名" tables = ["article"] [[rule]] schema = "数据库名" table = "表明" index = "索引名" type = "类型名" # 缺陷: -es跟mysql同步时,不希望把表所有字段都同步,mysql的多个表对着es的一个类型 # 话术升级: -一开始同步 -用了开源插件(读取mysql日志,连接上es,进行同步) -用信号自己写的 -再高端:仿着他的逻辑,用python自己写的,----》(把这个东西开源出来)
haystack的使用
django上的一个第三方模块 ---》你使用过的django第三方模块有哪些?
可以在django上实现全文检索
相当于orm--》对接es,solr,whoosh
https://www.yisu.com/article/218631.htm
不支持es,6以上版本
haystack+Elasticsearch实现全文检索
es的原生操作:ELasticsearch Elasticsearch-dsl
Redis补充
#1 只有5种数据结构: -多种数据结构:字符串,hash,列表,集合,有序集合#2 单线程,速度为什么这么快? -本质还是因为是内存数据库 -epoll模型(io多路复用) -单线程,没有线程,进程间的通信#3 linux上 安装redis#下载 https://redis.io/download/ #解压 tar -xzf redis-5.0.7.tar.gz #建立软连接 ln -s redis-5.0.7 redis cd redis make&&make install # bin路径下几个命令:redis-cli,redis-server,redis-sentinel # 在任意位置能够执行redis-server 如何做?配置环境变量#4 启动redis的三种方式 -方式一:(一般不用,没有配置文件) -redis-server -方式二:(用的也很少) redis-serve --port 6380 -方式三:(都用这种,配置文件) daemonize yes #是否以守护进程启动 pidfile /var/run/redis.pid #进程号的位置,删除 port 6379 #端口号 dir "/opt/soft/redis/data" #工作目录 logfile 6379.log #日志位置 # 启动:redis-server redis.conf1#5 客户端连接 redis-cli -h 127.0.0.1 -p 6379#6 使用场景 -看md文档
关于"Python操作ES的方式及与Mysql数据同步的方法"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Python操作ES的方式及与Mysql数据同步的方法"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
数据
同步
服务
方式
方法
查询
公司
文档
第三方
东西
文件
方案
索引
缺陷
配置
测试
监控
代码
位置
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
有格互联网科技
A股互联网金融科技公司
朗新科技与工业互联网
没上市的科技互联网公司
互联网科技金融
北京互联网科技公司
美国互联网科技
智网互联网科技
成都互联网科技公司
华中科技大学互联网
掌上梦互联网科技
科技赋能互联网健康
互联网和黑科技的看法
浙江互联网科技研学营
湖南一路畅行互联网科技
允成互联网科技有限公司融资
深圳互联网科技的发展
互联网科技接地气
西安左小互联网科技有限公司
保险科技 互联网保险
科技互联网公司装修
礼当家互联网科技
顺玮阁互联网科技
大白互联网科技
联恩商钥互联网科技有限公司
南山科技园互联网公司有哪些
威龙国际互联网科技公司
上海同邻互联网科技有限公司规模
颐高云石互联网科技