Django操作ES实现搜索功能

news2025/4/27 3:50:17

Django操作ES实现题目的高亮搜索功能

  • 一、基础配置
  • 二、使用ES完成题目的高亮搜索
    • 1. ES的初始化接口
    • 2. 使用ES实现题目的增删改查
      • 1. 题目的高亮搜索
      • 2. 题目的高亮搜索优化
      • 3. 将数据存储到MYSQL中持久化存储并同步到ES中

一、基础配置

  1. 下载依赖,与之前配置的ES版本一致。
    ES的配置请参考文件 ES的基础使用
pip install elasticsearch==7.15.2
  1. 在config文件夹下创建一个ES的配置文件
    在这里插入图片描述
    配置ES的IP和端口
    在这里插入图片描述

  2. 在使用的视图中创建ES的连接对象

1)打开work文件夹下的views.py文件,导入ES
在这里插入图片描述

2)创建ES客户端对象,连接ES服务

在这里插入图片描述
3)确认下ES的docker容器已经启动
在这里插入图片描述

二、使用ES完成题目的高亮搜索

分析:
在这里插入图片描述

1. ES的初始化接口

1)在TopicViewSet视图下增加ES的初始化接口,将MYSQL的数据同步到ES。
备注:这个接口的使用场景,ES崩掉或重新部署ES服务,将mysql中的数据同步到ES中进行恢复。

    # 初始化ES
    @action(methods=['put'], detail=False)
    def inites(self,request):
        # 获取mysql中的所有题目数据
        serializer = self.get_serializer(self.get_queryset(),many=True)
        data = serializer.data
        # 插入到ES中
        for i in data:
            #将数据插入到topic这个索引中,没有索引就会创建
            #这里不指明ID,会自动生成ID,id=i['id']这里我们直接使用数据库中的ID,与数据库保持一致
            #body表示要插入的数据内容
            es.index(index='topic',id=i['id'],body=i)
        return Response(serializer.data)

2)使用POSTMAN进行测试
在这里插入图片描述
3)在ES-HEAD可视化工具中,可以查看到数据
在这里插入图片描述

2. 使用ES实现题目的增删改查

1. 题目的高亮搜索

@action(methods=['get'], detail=False)
    def search(self,request):
        """
        GET /topic/_doc/_search
        {
            "query":{
                "match":{
                    "title":"" #title是要搜索的字段
                }
            },
            "highlight":{
                "pre_tags":"<span style='color:red'>", #开始标签
                "post_tags":"</span>",  #结束标签
                "fields":{
                    "title":""  #title是要高亮的字段
                }
            }
        }
        """
        #获取前端传入的数据,GET请求通过query_params获取前端传入的参数
        data = dict(request.query_params)
        subject = data.get('subject',[''])[0] #如果没传参,返回['']空列表
        query = {
   
            "query":{
   
                "match":{
   
                    "subject":subject
                }
            },
            "highlight":{
   
                "pre_tags"<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2162705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac安装manim

文章目录 0.关于Manim1.官方安装方法2.使用conda2.1 下载Anaconda2.2 创建环境2.3 Required Dependencies 3.实验 今天发现Mac电脑以前安装的manim不能用了&#xff0c;索性重新装一次&#xff0c;顺便把过程记录下来。 0.关于Manim Manim 主要分为两个主要版本&#xff1a; …

使用VSCode远程调试AutoDL上的程序

在租用的AutoDL服务器上基于终端不便进行代码调试&#xff0c;而使用远程桌面控制部署也相对麻烦。pycharm 则需要专业版才能进行远程开发&#xff0c;如果使用Shell启动的程序也没有办法调试&#xff0c;最终选择利用 VScode 来进行远程代码调试。 一、远程租用并启动服务器 …

一步到位:如何在卡内基梅隆大学计算机科学学院官网下载并安装ACME软件

想要在卡内基梅隆大学计算机科学学院官网下载ACME软件&#xff1f;下面是详细的操作步骤&#xff01; 1. 访问官网 首先&#xff0c;打开卡内基梅隆大学计算机科学学院的官方网站。 2. 搜索ACME软件 在官网首页的搜索框中输入“acme”&#xff0c;然后按下回车键。 3. 找到下载…

大数据Flink(一百二十四):案例实践——淘宝母婴数据加速查询

文章目录 案例实践——淘宝母婴数据加速查询 一、​​​​​​​创建数据库表并导入数据 二、​​​​​​​​​​​​​​创建session集群 三、​​​​​​​​​​​​​​源表查询 四、​​​​​​​​​​​​​​指标计算 案例实践——淘宝母婴数据加速查询 随着…

【全新课程】正点原子《ESP32基础及项目实战入门》培训课程上线!

正点原子《ESP32基础及项目实战入门》全新培训课程上线啦&#xff01;正点原子工程师手把手教你学&#xff01;熟练掌握ESP-IDF开发&#xff0c;突破ESP32入门难题&#xff01; 一、课程介绍 本课程针对ESP32的入门和基础外设进行系统教学&#xff0c;内容包括环境搭建、编程…

C#和数据库高级:密封类和方法覆盖

文章目录 一、密封类关键字&#xff1a;sealed方法覆盖 面向对象三大特性总结 一、密封类 关键字&#xff1a;sealed 方法覆盖 面向对象三大特性总结

类与对象【中】

1.类的六个默认构造函数 如果一个类中什么成员都没有简称空类 但空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显示实现&#xff0c;编译器会生成的成员函数…

公安局软件管理平台建设方案和必要性,论文-3-———未来之窗行业应用跨平台架构

三、平台功能设计 四、技术架构 1. 前端界面 - 采用简洁、易用的设计风格&#xff0c;适应不同终端设备的访问。 - 基于 HTML5、CSS3 和 JavaScript 构建。 2. 后端服务 - 选择主流的 Web 开发框架&#xff0c;如 未来之窗跨平台架构&#xff0c;VUE。 - 数据库…

IIS HTTPS 网页可能暂时无法连接,或者它已永久性地移动到了新网址 ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY

问题描述&#xff1a;站点突然无法访问&#xff0c;经排查发现&#xff0c;HTTP协议的网址可以继续访问&#xff0c;HTTPS的网址不可以访问。 问题分析&#xff1a;在Windows更新和滚动之后&#xff0c;由于 HTTP/2&#xff0c;当站点启动了 HTTP/2 连接&#xff0c;会出现一个…

【春秋云境】CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞

一、靶场介绍 Jenkins 2.441及更早版本&#xff0c;以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能&#xff0c;该功能会将参数中’字符后跟的文件路径替换为该文件的内容&#xff0c;允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 二、P…

Linux——HTTPS协议

HTTPS也是一个应用层协议&#xff1a;只是是在 HTTP 协议的基础上引入了一个加密层而已~ 目录 概念准备 1什么是加密 2为什么要加密 3常见的加密方式 对称加密 非对称加密 数据摘要(数据指纹) 一HTTPS加密方式 方案1只使用对称加密 方案2只使用非对称加密 方案3双…

C#|.net core 基础 - 深拷贝的五大类N种实现方式

在实际应用中经常会有这样的需求&#xff1a;获取一个与原对象数据相同但是独立于原对象的精准副本&#xff0c;简单来说就是克隆一份&#xff0c;拷贝一份&#xff0c;复制一份和原对象一样的对象&#xff0c;但是两者各种修改不能互相影响。这一行为也叫深克隆&#xff0c;深…

第6章 常用UI组件库

一.Element Plus组件库 1. 安装Element Plus 什么是Element Plus&#xff1f; Element Plus是基于Vue 3开发的优秀的PC端开源UI组件库&#xff0c;它是Element的升级版&#xff0c;对于习惯使用Element的人员来说&#xff0c;在学习Element Plus时&#xff0c;不用花费太多的…

CC面试准备

半导体基础 半导体是介于导体和绝缘体之间的一种介质&#xff0c;在不同条件下表现出不同的导电性或者不导电特性&#xff0c; 电子半导体器件材料大部分为硅&#xff0c;锗等元素 本征半导体&#xff1a;完全不含杂质的纯净半导体&#xff0c;因为不含杂质&#xff0c;其中…

[笔记]一组电缆、定位相关产品的技术参数

csdn不允许做广告&#xff0c;这里的那家定位供应商的技术看起来是可以的。很有希望。它的原理并不复杂&#xff0c;这家企业在处理业务领域以外的新型产品时&#xff0c;是查过资料的&#xff0c;这就超过了60%的同行。 1.电缆 仅给出现在市面供应的铠装电缆结构&#xff0c…

七层负载均衡和四层负载均衡的区别

文章目录 什么是七层负载均衡&#xff1f;一、定义与工作原理二、优点与缺点三、应用场景四、常见七层负载均衡器五、负载均衡算法 什么是四层负载均衡&#xff1f;一、定义与原理定义&#xff1a;原理&#xff1a; 二、特点与应用场景特点&#xff1a;应用场景&#xff1a; 三…

STM32基础学习笔记-ADC面试基础题6

第六章、ADC 常见问题 1、基本概念&#xff1a;什么是ADC &#xff1f;作用 &#xff1f;逐次逼近型 2、传感器本质 &#xff1f;传感器、电压、ADC数值转化 &#xff1f; 3、ADC的特征 &#xff1f; 转化时间、分辨率、精度、量化误差 &#xff1f; 4、ADC框图组成部分 &…

华为云发布全栈可观测平台AOM,以AI赋能应用运维可观测

9月19日&#xff0c;华为全联接大会2024举办期间&#xff0c;在“AI赋能应用现代化&#xff0c;加速软件生产力跃升”为主题的论坛上&#xff0c;华为云发布全栈可观测平台AOM&#xff0c;以AI赋能应用运维可观测&#xff0c;提升企业应用可用性与稳定性。 该平台发布标志着华…

针对国产化--离线安装Nginx rpm包下载 ARM64(.aarch64.rpm) 版本下载

源地址&#xff1a;https://nginx.org/packages/centos/7/aarch64/RPMS/ 可以选择系统分别进行下载对应的rmp包

公安局软件管理平台建设方案和必要性,论文-2-———未来之窗行业应用跨平台架构

一、平台方略 随着gov信息化建设的不断推进&#xff0c;各类ZW软件的应用需求日益增加。为了提高ZW软件的获取便利性、AQ性和规范性&#xff0c;建设一个专门的GOV软件管理平台具有重要意义。 集中提供各类ZW软件&#xff0c;方便工作人员快速获取和安装&#xff0c;减少因软…