elasticsearch7 实战应用

2023/11/30 8:24:58
from elasticsearch7 import Elasticsearch


class ElasticsearchTool():
    def __init__(self,index):
    #     初始化es对象
     self.es = Elasticsearch(
        # ['http://101.132.32.61:9200/'],
         ['172.17.0.7:9200/'],
         sniff_on_connection_fail=True,  # 节点没有响应时,进行刷新,重新连接
        sniffer_timeout=60,  # 每 60 秒刷新一次
         )
     self.index = index  #索引实例化传递的索引名

     self.create_index()

    #创建索引
    def create_index(self):
        #判断索引是否已经存在
        if not self.es.indices.exists(index=self.index):
         self.es.indices.create(index=self.index)
    #向索引中插入数据
    def add_data(self,id,data):
        return self.es.index(index=self.index,id=id,document=data)

    #搜索数据
    def search(self,body):
        return self.es.search(index=self.index,body=body)



我们来测试一下封装是否有问题:



if __name__ == '__main__':

    # 插入数据(进行测试)
    # es_tool =ElasticsearchTool('my_book3')
    # re1 = es_tool.add_data('1',{
    #     'title':'三国演义',
    #     'author':'罗贯中'
    # })
    # print(re1)



# 查询数据(进行测试)
    es_tool = ElasticsearchTool('mybook')



    res = es_tool.search(

        {
            "query": {
                "bool": {
                    "should": [
                        {
                            "match": {
                                "title": '恐龙',
                            }
                        },
                        {
                            "match": {
                                "price": '66'
                            }
                        }
                    ]
                }
            }
        }
    )




    print(res)




//进行监听数据;






 # 监听模型类

导入我们封装的类

from utils.elasticsear_settig import ElasticsearchTool
# # 在插入数据后进行监听
@event.listens_for(ArticleModel,'after_insert',raw=True)
@event.listens_for(ArticleModel,'after_update',raw=True)
def listen_book_model(mapper,connection,target):



    data = {
        'aid':target.object.aid,
        'title':target.object.title,
        'audio_file':target.object.audio_file,
        'is_vip':target.object.is_vip,
        'count':target.object.count,
    }
    es = ElasticsearchTool('myarticle')
    es.add_data(target.object.aid,data)





// 在视图中实现搜索功能:
class SearchView(BaseView):
    def get(self,word):

        from utils.elasticsear_settig import ElasticsearchTool
        es =  ElasticsearchTool('mybook')
        rs = es.search(

        #     '''
        #     'bid':target.object.bid,
        # 'title':target.object.title,
        # 'img':target.object.img,
        # 'author':target.object.author,
        # 'read_num':target.object.read_num,
        # 'intro':target.object.intro,
        # 'is_hot':target.object.is_hot,
        #
        #
        #     '''


            {
                "query": {
                    "bool": {
                        "should": [
                            {
                                "match": {
                                    "title": word,
                                }
                            },

                            {
                                "match": {
                                    "intro": word,
                                }
                            },

                            {
                                "match": {
                                    "price": word
                                }
                            },

                            {
                                "match": {
                                    "img": word,
                                }
                            },
                            {
                                "match": {
                                    "author": word,
                                }
                            },
                        ]
                    }
                }
            }
        )
        book_list = rs['hits']['hits']
        book_all = []
        for book in book_list:
            book_all.append(book['_source'])
            return self.success(book_all)


http://www.jnnr.cn/a/112294.html

相关文章

vscode自动添加备注及函数信息

由于工作原因,使用过一段时间的c#,发现c#是具有自动添加函数备注信息的,就想查查vscode能否完成这个功能,经过一段时间的查找资料和研究,将完成的过程写下来,分享以下. 1.下载插件 首先先下载插件koroFileHeader,在vscode中在线下载. 在vscode中插件安装界面直接输入插件名称…

查题校园公众号题库系统

查题校园公众号题库系统 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(…

Terraformation启动全球首个专注于生物多样性的碳融资森林加速器,以创建更多的全球土地恢复项目

这一史无前例的加速器将解决增加基于自然的优质碳信用额供应所需的关键资金问题 首批林业团队的申请工作现已开始,入选者将于2023年初公布 企业和其它资助者有机会在日益稀缺的市场上获得优质碳信用额 全球重新造林公司Terraformation启动全球首个专注于生物多样性…

数据获取与预处理

文章目录Requests简介Requests库安装Requests库的基本操作Requests库的7个主要方法Request方法get方法Response对象的属性head方法post方法Requests简介 提示:这里可以添加本文要记录的大概内容: 首先他是个第三方库,应用非常广泛 采用Apac…

数字图像处理MATLAB

数字图像处理MATLAB 基(本)操(作) 图片读取 Aimread(test.bmp); imshow(A);2. 图像写入 Aimread(test.bmp); imwrite(A,test-bak.bmp); Bimread(test-bak.bmp); imshow(B);3. 图像文件信息查询 infoimfinfo(test.bmp);4. 显示…

机器学习入门(六)神经网络初识

目录 一、模型解释 1.1 用人脑解释 1.2 用模型解释 二、通过异或门的神经网络理解偏置量、神经网络的传播 2.1 与门的神经网络表示 2.2 或门的神经网络表示 2.3 异或门的神经网络表示 三、多物体分类 一、模型解释 1.1 用人脑解释 神经网络是模拟人的神经元&#…

小侃设计模式(五)-建造者模式与模板方法模式

1.概述 建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式,它可以将复杂对象的建造过程抽象出来(抽象类别),这个抽象过程的不同实现方法可以构造出不同表现(属性&…

Java项目(三)-- SSM开发社交网站(9)--后台图书管理功能

后台图书管理功能 富文本编辑器wangEditor 基于javascript与css开发是Web富文本编辑器&#xff0c;轻量、简洁、易用、开源免费。 代码演示 我们在test.ftl中添加富文本编辑器演示下 <!DOCTYPE html> <html lang"en"> <head><meta charset&…

【创建型】生成器模式(Builder)

目录生成器模式(Builder)适用场景生成器模式实例代码&#xff08;Java&#xff09;生成器模式(Builder) 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 适用场景 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方…

阿里云历时13年,站上世界现代计算架构之巅

在1999年阿里巴巴成立的时候&#xff0c;恐怕当时的创始人们怎么也想不到&#xff0c;仅在10年后阿里巴巴就开始投身到以云计算为代表的新一代计算技术体系研发中&#xff0c;并在20年后站上了世界现代计算架构之巅。2022年&#xff0c;阿里云不仅是世界前三朵“云”之一&#…

广东2022年下半年系统集成项目管理工程师上午真题及答案解析

试题一(18分) A公司承接了一个信息系统开发项目&#xff0c;任命小安为质量经理。由于前一个项目延期&#xff0c;小安在项目实施阶段才进入本项目。 进入项目后&#xff0c;小安按照项目计划编制了质量管理计划&#xff0c;规划了质量审计、功能测试、集成测试、验收测试等活…

JSP plugin动作

<jsp:plugin> 动作可以在页面中插入 Java Applet 小程序或 JavaBean&#xff0c;它们能够在客户端运行&#xff0c;但此时&#xff0c;需要在 IE 浏览器中安装 Java 插件。当 JSP 文件被编译并送往浏览器时&#xff0c;<jsp:plugin> 动作将会根据浏览器的版本&…

【FreeRTOS】事件组的使用

事件组前言创建、删除事件设置、同步事件示例等待多个事件用法同步用法前言 事件组与信号量类似&#xff0c;我们可以把事件组理解为一个整数&#xff08;在FreeRTOSConfig.h文件中&#xff09;&#xff0c;用其中一位来表示一个任务的状态0-1&#xff0c;我们可以通过这些任务…

艾美捷热转移稳定性检测试剂盒解决方案

PROTEOSTAT热转移稳定性检测试剂盒&#xff1a;作为pH、离子强度和浓度函数的蛋白质稳定性的加速筛选。 艾美捷热转移稳定性检测试剂盒特点&#xff1a; 1、一种简单、灵敏、均匀的荧光测定法&#xff0c;无需样品分离或稀释&#xff0c;能够加速优化蛋白质稳定性条件 2、即使…

睿智的目标检测62——Keras搭建YoloV7目标检测平台

睿智的目标检测62——Keras搭建YoloV7目标检测平台学习前言源码下载YoloV7改进的部分&#xff08;不完全&#xff09;YoloV7实现思路一、整体结构解析二、网络结构解析1、主干网络Backbone介绍2、构建FPN特征金字塔进行加强特征提取3、利用Yolo Head获得预测结果三、预测结果的…

计算机毕业设计(附源码)python智能居家养老服务平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

上海亚商投顾:沪指录得6连阳 两市成交再度破万亿

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日横盘震荡&#xff0c;收盘集体小幅上扬&#xff0c;日K线均录得6连阳。虚拟现实概念股集体拉升&#…

android kotlin学习

android 四大组件 参考教程 Activity&#xff1a; 负责用户界面展示和交互&#xff0c;学习Activity就要学习Fragment&#xff0c;且必须要和Activity一起使用&#xff0c;常用于模块开发&#xff0c; 一个APP有多个Activity Service服务&#xff1a; 不需要交互&#xff0c;…

Node.js 实战 第1章 欢迎进入Node.js 的世界 1.5 三种主流的Node 程序 1.6 总结

Node.js 实战 文章目录Node.js 实战第1章 欢迎进入Node.js 的世界1.5 三种主流的Node 程序1.5.1 Web 应用程序1.5.2 命令行工具和后台程序1.5.3 桌面程序1.5.4 使用Node 的应用程序1.6 总结第1章 欢迎进入Node.js 的世界 1.5 三种主流的Node 程序 Node 程序主要可以分成三种类…

MyBatis(简化数据库操作的持久层框架)->基础入门

目录 一.概述 1.为什么需要 MyBatis 2.基本介绍 2.1MyBatis 工作示意图 二.MyBatis 快速入门 1.快速入门需求说明 2.代码实现 2.1创建数据库 2.2创建maven项目&#xff08;子模块&#xff09; 2.3创建 resources/mybatis-config.xml 2.4实体类Pojo类 2.5Mons…
最新文章