千家信息网

如何在Django中使用ElasticSearch

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍了如何在Django中使用ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何在Django中使用ElasticSearch文章都
千家信息网最后更新 2025年11月16日如何在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安全错误 数据库的锁怎样保障安全 小程序用什么编程软件开发 我国网络安全情况的利弊 加强网络安全技术人才培养 搜集客户外贸软件开发公司 济南同智软件开发公司 保险监管软件开发定制收费标准 数据库设计 评论 排序 猎豹浏览器代理服务器 云南信息化网络安全工程联系人 惠普台式机服务器多少钱 数据库 实例 商丘网络安全系统厂商 拳头手游服务器 江苏智能软件开发创新服务 数据库字符数 项目中数据库的时区有什么用 sql数据库连接字符串函数 怎么能查到之前的主服务器端口 交通银行总行软件开发笔试 正规的电脑服务器回收选哪家 电脑网络技术有哪些行业 北京健康宝 网络安全 2003服务器密码忘了 某网站网络安全检查报告 博山企业软件开发服务 华为手机网络安全证书 国家安全网络安全辨析 qt怎么安装数据库驱动 服务器怎么安装到网络机顶盒 国际服什么叫服务器维护中
0