0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你们怎么在Django中使用ElasticSearch

马哥Linux运维 来源:CSDN技术社区 作者:py臭屁虫 2021-06-11 16:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是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:

# models.pyclass 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.pyfrom django_elasticsearch_dsl import Document

from django_elasticsearch_dsl.registries import registry

from .models import Category

@registry.register_documentclass CategoryDocument(Document):

class Index:

name = ‘category’

settings = {

‘number_of_shards’: 1,

‘number_of_replicas’: 0

}

class Django:

model = Category

fields = [

‘name’,

‘desc’,

填充:

要创建和填充Elasticsearch索引和映射,请使用search_index命令:

$python manage.py search_index — rebuild

要获得更多帮助,请使用命令:

$ 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”)

# or

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()

# qs is just a django queryset and it is called with order_by to keep# the same order as the elasticsearch result.for cat in qs:

print(cat.name)

完毕,如果有任何疑问,欢迎留言交流。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1302

    浏览量

    73638
  • HTTP
    +关注

    关注

    0

    文章

    531

    浏览量

    34849
  • Lucene
    +关注

    关注

    0

    文章

    6

    浏览量

    7834
  • Elasticsearch
    +关注

    关注

    0

    文章

    30

    浏览量

    3125

原文标题:如何在Django中使用ElasticSearch

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FX3为什么无法Windows中使用Gstreamer?

    我正在开发 FX3,我可以 Linux 和 Windows 中使用 y8 格式的 ffmpeg 流式传输相机, Linux 中使用 y8 格式的 Gstreamer,但我无法
    发表于 05-29 06:59

    单节点Elasticsearch+Filebeat+Kibana安装指南

    单节点Elasticsearch+Filebeat+Kibana安装指南
    的头像 发表于 05-21 11:06 971次阅读
    单节点<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安装指南

    labview 中使用了旋钮,旋钮的值改变事件中怎么能够做到只终值时触发?

    labview 中使用了旋钮,旋钮的值改变事件中怎么能够做到只终值时触发? (如果使用鼠标释放代替,会出现鼠标移除后再释放是无法触发)
    发表于 05-10 21:28

    如何实现MC33774ICSimulink环境中使用基于模型的设计?

    我想熟悉如何实现MC33774IC Simulink 环境中使用基于模型的设计。 尽管 MATLAB 提供了一些示例文件,但它们似乎是最终版本。要更深入地了解如何配置MC33774,我正在寻找一个教程,该教程解释了如何从头开始
    发表于 04-10 08:05

    为什么S32G中使用32个GPIO进行启动配置?

    我很好奇为什么 S32G 中使用 32 个 GPIO 进行启动配置。 是否必须使用所有 32 个 GPIO 进行引导模式配置? 要使用分配给引导配置的 GPIO,是否需要额外的开关?
    发表于 04-10 06:48

    模拟中使用ESD保护装置作为3D模型

    电子发烧友网站提供《模拟中使用ESD保护装置作为3D模型.pdf》资料免费下载
    发表于 02-13 14:35 0次下载
    <b class='flag-5'>在</b>模拟<b class='flag-5'>中使</b>用ESD保护装置作为3D模型

    基于Django89的web框架代码

    基于Django89的web框架代码,超详细
    发表于 02-10 15:38 0次下载

    AN4254-24CS系列串行EEPROM中使用增强软件写保护功能

    电子发烧友网站提供《AN4254-24CS系列串行EEPROM中使用增强软件写保护功能.pdf》资料免费下载
    发表于 01-22 15:43 0次下载
    AN4254-<b class='flag-5'>在</b>24CS系列串行EEPROM<b class='flag-5'>中使</b>用增强软件写保护功能

    如何在Linux环境下高效安装部署和配置Elasticsearch

    /CentOS-7-x86_64-DVD-2009.iso elasticsearch-7.10.0-linux-x86_64.tar.gz https://www.elastic.co/cn/downloads/past-releases
    的头像 发表于 01-16 11:49 1826次阅读

    EE-168:ADSP-218x DSP中使用第三泛音晶体

    电子发烧友网站提供《EE-168:ADSP-218x DSP中使用第三泛音晶体.pdf》资料免费下载
    发表于 01-15 16:08 0次下载
    EE-168:<b class='flag-5'>在</b>ADSP-218x DSP<b class='flag-5'>中使</b>用第三泛音晶体

    24CS系列串行EEPROM中使用增强软件写保护功能

    电子发烧友网站提供《24CS系列串行EEPROM中使用增强软件写保护功能.pdf》资料免费下载
    发表于 01-15 15:21 0次下载
    <b class='flag-5'>在</b>24CS系列串行EEPROM<b class='flag-5'>中使</b>用增强软件写保护功能

    EE-152:ADSP-219x和VisualDSP 2.0中使用软件叠加

    电子发烧友网站提供《EE-152:ADSP-219x和VisualDSP 2.0中使用软件叠加.pdf》资料免费下载
    发表于 01-14 16:13 0次下载
    EE-152:<b class='flag-5'>在</b>ADSP-219x和VisualDSP 2.0<b class='flag-5'>中使</b>用软件叠加

    在华为云上通过 Docker 容器部署 Elasticsearch 并进行性能评测

      2.2 安装 Docker   2.3 启动 Docker   3. 使用Docker部署Elasticsearch   3.1 拉取Elasticsearch镜像   3.2 启动
    的头像 发表于 01-13 13:36 888次阅读
    在华为云上通过 Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并进行性能评测

    构建高效搜索解决方案,Elasticsearch &amp; Kibana 的完美结合

    的流畅运行。部署 Elasticsearch,享受分布式搜索的精准与快速;结合 Kibana,实现数据可视化,决策更直观。 828 华为云企业上云节不仅降低成本,更提升效率。云端部署,资源按需分配,灵活应对业务增长。立即体验,开启高效搜索新篇章,让数据驱动您的企业未来!
    的头像 发表于 12-27 13:48 636次阅读
    构建高效搜索解决方案,<b class='flag-5'>Elasticsearch</b> &amp; Kibana 的完美结合

    技术升级:探索华为云 EulerOS 与 Flexus X 实例如何完美融合快速部署 Django

    ,我们将目光聚焦于华为云 EulerOS 操作系统与 Flexus X 实例的深度融合,探讨如何在这一强大组合下实现 Django 服务的快速部署。本文将带你领略华为云的技术魅力,解锁高效部署新姿势,助力你的业务飞速发展。 什么是 Django
    的头像 发表于 12-25 17:50 772次阅读
    技术升级:探索华为云 EulerOS 与 Flexus X 实例如何完美融合快速部署 <b class='flag-5'>Django</b>