Python이 ES를 작동하는 방법과 Mysql과 데이터를 동기화하는 방법
Python으로 Elasticsearch를 운영하는 두 가지 방법
# 官方提供的:Elasticsearch # pip install elasticsearch # GUI:pyhon能做图形化界面编程吗? -Tkinter -pyqt # 使用(查询是重点) # pip3 install elasticsearch https://github.com/elastic/elasticsearch-py from elasticsearch import Elasticsearch obj = 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 json print(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: 기업 금융, 공급망
대기업 Kingdee, UFIDA에서 소프트웨어를 개발했습니다------>귀사는 자체 서버를 구매합니다--->소프트웨어는 다음에서 실행됩니다.
서버상의 saas 모드: 회사가 서비스를 구매하고, 서비스는 10년 동안 지속됩니다------》계정 비밀번호---》로그인 후 운영 가능합니다---》문제가 있는 경우 contact UFIDA---》서버가 다른 사람의 장소에 있습니다---》 정부 업무 클라우드, 다양한 클라우드---모든 것이 클라우드에 있습니다
---정부가 돈을 들여 구매하는 것---"UF는 감히 유출해?
---미래의 클라우드 컴퓨팅--->인터넷에만 액세스할 수 있습니다--->컴퓨터 컴퓨팅 성능은 제한되어 있습니다--->클라우드에서 서비스 구매--->컴퓨팅 1+. . . +100 ---》컴퓨팅 서비스를 구매하고 결과를 직접 확인
# 第二种使用方式 # https://github.com/elastic/elasticsearch-dsl-py # pip3 install elasticsearch-dsl from datetime import datetime from elasticsearch_dsl import Document, Date, Nested, Boolean,analyzer, InnerDoc, Completion, Keyword, Text,Integer from elasticsearch_dsl.connections import connections connections.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과 동일--》Docking 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과 데이터를 동기화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL 및 Phpmyadmin은 강력한 데이터베이스 관리 도구입니다. 1) MySQL은 데이터베이스 및 테이블을 작성하고 DML 및 SQL 쿼리를 실행하는 데 사용됩니다. 2) PHPMYADMIN은 데이터베이스 관리, 테이블 구조 관리, 데이터 운영 및 사용자 권한 관리에 직관적 인 인터페이스를 제공합니다.

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

golangisidealforbuildingscalablesystemsdueToitsefficiencyandconcurrency

Laravel은 팀이 PHP에 익숙하고 풍부한 기능이 필요한 프로젝트에 적합하지만 Python 프레임 워크는 프로젝트 요구 사항에 따라 다릅니다. 1. Laravel은 빠른 개발과 유연성이 필요한 프로젝트에 적합한 우아한 구문 및 풍부한 기능을 제공합니다. 2. Django는 "배터리 포함"개념으로 인해 복잡한 응용 프로그램에 적합합니다. 3. 플라스크는 빠른 프로토 타입과 소규모 프로젝트에 적합하여 유연성이 뛰어납니다.

MySQL에서 외국 키의 기능은 테이블 간의 관계를 설정하고 데이터의 일관성과 무결성을 보장하는 것입니다. 외국 키는 참조 무결성 검사 및 계단식 작업을 통해 데이터의 효과를 유지합니다. 성능 최적화에주의를 기울이고 사용할 때 일반적인 오류를 피하십시오.

MySQL과 Mariadb의 주요 차이점은 성능, 기능 및 라이센스입니다. 1. MySQL은 Oracle에 의해 개발되었으며 Mariadb는 포크입니다. 2. MariaDB는 높은 하중 환경에서 더 나은 성능을 발휘할 수 있습니다. 3. Mariadb는 더 많은 스토리지 엔진과 기능을 제공합니다. 4.MySQL은 듀얼 라이센스를 채택하고 MariaDB는 완전히 오픈 소스입니다. 선택할 때 기존 인프라, 성능 요구 사항, 기능 요구 사항 및 라이센스 비용을 고려해야합니다.

SQL은 관계형 데이터베이스를 관리하는 표준 언어이며 MySQL은 SQL을 사용하는 데이터베이스 관리 시스템입니다. SQL은 CRUD 작업을 포함한 데이터베이스와 상호 작용하는 방법을 정의하는 반면 MySQL은 SQL 표준을 구현하고 저장 프로 시저 및 트리거와 같은 추가 기능을 제공합니다.
