电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django對接elasticsearch實現(xiàn)全文檢索的示例代碼

瀏覽:2日期:2024-09-03 13:32:54
目錄前言第一步:首先安裝相關的依賴包第二步:在django項目配置文件settings.py中注冊應用第三步:在django項目配置文件settings.py中指定搜索的后端第四步:創(chuàng)建索引類第五步:在templates目錄中創(chuàng)建text字段使用的模板文件第六步:手動更新索引第七步:創(chuàng)建haystack序列化器第八步:創(chuàng)建視圖類第九步:添加路由第十步:結果前言

說到搜索,第一時間想到的是mysql數(shù)據(jù)庫的like語句

但是,假如你的數(shù)據(jù)庫有幾千萬條數(shù)據(jù),name字段沒有索引,可能查詢需要十幾分鐘,用戶可能會等你?那為什么不給name字段增加索引?數(shù)據(jù)表不僅僅是用來查詢,也會經(jīng)常修改數(shù)據(jù),新增刪除數(shù)據(jù)等。建立索引后,做增刪改操作時也會大大占用數(shù)據(jù)庫資源。所以應該怎么解決呢?

Elasticsearch!

一個強大的基于Lucene的全文搜索服務器!維基百科、Stack Overflow、Github都在用。

如果想詳細了解其原理的話,可以參考:https://www.elastic.co/guide/index.html

第一步:首先安裝相關的依賴包

pip install drf-haystack pip install elasticsearch pip install djangorestframework第二步:在django項目配置文件settings.py中注冊應用

INSTALLED_APPS = [’app.apps.AppConfig’, ’haystack’, ’rest_framework’]第三步:在django項目配置文件settings.py中指定搜索的后端

HAYSTACK_CONNECTIONS = { ’default’: { ’ENGINE’:’haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine’, ’URL’: ’http://127.0.0.1:9200/’, # 此處為elasticsearch運行的服務器ip地址,端口號固定為9200 ’INDEX_NAME’: ’test’, # 指定elasticsearch建立的索引庫的名稱 }, } # 當添加、修改、刪除數(shù)據(jù)時,自動生成索引 HAYSTACK_SIGNAL_PROCESSOR = ’haystack.signals.RealtimeSignalProcessor’ # 指定搜索結果每頁的條數(shù) # HAYSTACK_SEARCH_RESULTS_PER_PAGE = 1第四步:創(chuàng)建索引類

在此之前要先創(chuàng)建model類,并插入數(shù)據(jù)

from django.db import models class Es(models.Model): name=models.CharField(max_length=32) desc=models.CharField(max_length=32)

在需要進行索引的應用的目錄下創(chuàng)建文件search_indexes.py, 在該文件內(nèi)創(chuàng)建該索引類我在app應用下創(chuàng)建:search_indexes.py

# 索引模型類的名稱必須是 模型類名稱 + Index from haystack import indexes from .models import Es class EsIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) def get_model(self): '''返回建立索引的模型類''' return Es def index_queryset(self, using=None): '''返回要建立索引的數(shù)據(jù)查詢集''' return self.get_model().objects.all()第五步:在templates目錄中創(chuàng)建text字段使用的模板文件

創(chuàng)建文件templates/search/indexes/app/es_text.txt文件中定義

{{ object.name }} {{ object.desc }}第六步:手動更新索引

python manage.py rebuild_index #數(shù)據(jù)庫有多少條數(shù)據(jù),全部會被同步到es中第七步:創(chuàng)建haystack序列化器

from drf_haystack.serializers import HaystackSerializer from rest_framework.serializers import ModelSerializer from app import models from app.search_indexes import EsIndex class EsSerializer(ModelSerializer): class Meta: model=models.Es fields=’__all__’ class EsIndexSerializer(HaystackSerializer): object = EsSerializer(read_only=True) # 只讀,不可以進行反序列化 class Meta: index_classes = [EsIndex]# 索引類的名稱 fields = (’text’, ’object’)# text 由索引類進行返回, object 由序列化類進行返回,第一個參數(shù)必須是text第八步:創(chuàng)建視圖類

from drf_haystack.viewsets import HaystackViewSet from app.models import Book from app.serializers import EsIndexSerializer class EsSearchView(HaystackViewSet): index_models = [Es] serializer_class = EsIndexSerializer第九步:添加路由

from django.conf.urls import url from django.contrib import admin from rest_framework import routers from app.views import EsSearchView router = routers.DefaultRouter() router.register('book/search', EsSearchView, base_name='book-search') urlpatterns = [ url(r’^admin/’, admin.site.urls), ] urlpatterns += router.urls第十步:結果

http://127.0.0.1:8000/?text=測試

到此這篇關于Django對接elasticsearch實現(xiàn)全文檢索的示例代碼的文章就介紹到這了,更多相關Django elasticsearch實現(xiàn)全文檢索內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Django
相關文章:
主站蜘蛛池模板: 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 早报网| 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 浇钢砖,流钢砖_厂家价低-淄博恒森耐火材料有限公司 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 空气弹簧|橡胶气囊|橡胶空气弹簧-上海松夏减震器有限公司 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 迪威娱乐|迪威娱乐客服|18183620002 | 北京银联移动POS机办理_收银POS机_智能pos机_刷卡机_收银系统_个人POS机-谷骐科技【官网】 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 缠绕机|缠绕膜包装机|缠绕包装机-上海晏陵智能设备有限公司 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 耐酸碱泵-自吸耐酸碱泵型号「品牌厂家」立式耐酸碱泵价格-昆山国宝过滤机有限公司首页 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 护栏打桩机-打桩机厂家-恒新重工| 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 |