千家信息网

如何在Django中使用ElasticSearch

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了如何在Django中使用ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何在Django中使用ElasticSearch文章都
千家信息网最后更新 2025年02月02日如何在Django中使用ElasticSearch

这篇文章主要介绍了如何在Django中使用ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何在Django中使用ElasticSearch文章都会有所收获,下面我们一起来看看吧。

什么是Elasticsearch?

Elasticsearch是基于Lucene库的搜索引擎。它提供了具有HTTP Web界面和无模式JSON文档的分布式,多租户功能的全文本搜索引擎。
Elasticsearch是用Java开发的。

Elasticsearch的用途是什么?

Elasticsearch可以使我们快速,近乎实时地存储,搜索和分析大量数据,并在几毫秒内给出答复。之所以能够获得快速的搜索响应,是因为它可以直接搜索索引,而不是直接搜索文本。

Elasticsearch-一些基本概念

索引—不同类型的文档和文档属性的集合。例如,文档集可以包含社交网络应用程序的数据。

类型/映射-共享共享同一索引中存在的一组公共字段的文档集合。例如,索引包含社交网络应用程序的数据;对于用户个人资料数据,可以有一种特定的类型,对于消息传递数据,可以有另一种类型,对于注释数据,可以有另一种类型。

文档-以特定方式以JSON格式定义的字段的集合。每个文档都属于一种类型,并且位于索引内。每个文档都与唯一的标识符(称为UID)相关联。

字段-Elasticsearch字段可以包含多个相同类型的值(本质上是一个列表)。另一方面,在SQL中,一列可以恰好包含所述类型的一个值。

在Django中使用Elasticsearch

安装和配置,安装Django Elasticsearch DSL:

$ pip install django-elasticsearch-dsl

然后将django_elasticsearch_dsl添加到INSTALLED_APPS

必须在django设置中定义ELASTICSEARCH_DSL

例如:

ELASTICSEARCH_DSL={    'default': {        'hosts': 'localhost:9200'    },}

声明要索引的数据,然后创建model:

"`python

models.py

class Category(models.Model):name = models.CharField(max_length=30)desc = models.CharField(max_length=100, blank=True)def str(self):return '%s' % (self.name)

要使该模型与Elasticsearch一起使用,请创建django_elasticsearch_dsl.Document的子类,在Document类中创建一个Index类以定义我们的Elasticsearch索引,名称,设置等,最后使用Registry.register_document装饰器注册该类。它需要在应用目录中的documents.py中定义Document类。

documents.py

from django_elasticsearch_dsl import Documentfrom django_elasticsearch_dsl.registries import registryfrom .models import Category@registry.register_documentclass CategoryDocument(Document):class Index:name = 'category'settings = {'number_of_shards': 1,'number_of_replicas': 0}class Django:model = Categoryfields = ['name','desc',]

填充:

要创建和填充Elasticsearch索引和映射,请使用search_index命令:
python manage.py search_index — rebuildpythonmanage.pysearch

要获得更多帮助,请使用命令:python manage.py search_index —help

现在,当执行以下操作时:

category = Category(name="Computer and Accessories",desc="abc desc")category.save()

该对象也将保存在Elasticsearch中(使用信号处理程序)。

搜索:
要获取elasticsearch-dsl-py搜索实例,请使用:

s = CategoryDocument.search().filter("term", name="computer")

或者

s = CategoryDocument.search().query("match", description="abc")for hit in s:print("Category name : {}, description {}".format(hit.name, hit.desc))

要将弹性搜索结果转换为真实的Django查询集,请注意,这会花费一个SQL请求来检索具有由Elasticsearch查询返回的ID的模型实例。

s = CategoryDocument.search().filter("term", name="computer")[:30]qs = s.to_queryset()
for cat in qs:print(cat.name)

关于"如何在Django中使用ElasticSearch"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何在Django中使用ElasticSearch"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

搜索 文档 类型 索引 数据 字段 知识 程序 应用 内容 命令 实例 应用程序 引擎 搜索引擎 更多 模型 社交 篇文章 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何提高自己的软件开发水平 数据库表的优点和特点 网络安全信息的5个基本要素 如何跟孩子讲网络安全 网络安全开源情报系统 entos服务器配置 网络安全等级保护管理平台 上海网络技术服务优化价格 三河市网络安全 湿巾行业 前瞻数据库 网络安全置换算法 软件开发怎么申请高新企业 通州西集国家网络安全园 怎么把apache安装到服务器 软件开发项目实施前准备 长春网络技术服务哪家好 计算机网络技术笔记整理 录像机硬盘数据库修复如何取消 网络安全法入罪细节 邮储银行软件开发薪资 游戏数据库开启代理商 庆余年安卓服务器 通用网络安全防护措施 数据服务器数据用u盘转移 计算机应用技术与网络技术专升本 海南网络安全协会培训 电脑QQ添加好友显示服务器繁忙 寒假免费使用数据库 河北ios软件开发来电咨询 大象数据库输入数据
0