Python が ES を操作する方法とデータを Mysql と同期する方法
Python で Elasticsearch を運用する 2 つの方法
# 官方提供的: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 年間のサービスを提供します--->> アカウントとパスワード --->> ログインすると操作可能になります --->>問題があります。UFIDA に連絡してください --->>サーバーは他人の場所にあります--->>政府クラウド、さまざまなクラウド---すべてのものはクラウドに行きます
---政府がお金を使っているもの購入する---》UFIDAはあえてリークするつもりですか?
---将来のクラウド コンピューティング--->> インターネットにのみアクセス可能--->> コンピュータのコンピューティング能力には限界があります--->> クラウド上でサービスを購入--->> コンピューティング 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 Aサードパーティ モジュール---》使用したサードパーティの Django モジュールは何ですか?
django で全文検索が実現可能
ORM と同等-->>Docking es、solr、whoosh
https://www.yisu.com/article/218631.htm
- ## はバージョン 6 以降の es をサポートしていません #haystack Elasticsearch は全文検索を実装します
- es ネイティブ操作: ELlasticsearch 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 中国語 Web サイトの他の関連記事を参照してください。

ホット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
ビジュアル Web 開発ツール

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は、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

Laravelは、チームがPHPに精通しており、豊富な機能を必要とするプロジェクトに適していますが、Python Frameworksはプロジェクトの要件に依存します。 1.Laravelは、迅速な開発と柔軟性を必要とするプロジェクトに適したエレガントな構文とリッチな機能を提供します。 2。Djangoは、「バッテリー包含」の概念のため、複雑なアプリケーションに適しています。 3.Flaskは、高速プロトタイプや小規模プロジェクトに適しており、柔軟性が非常に高くなります。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。
