drf中elasticsearch、haystack的使用

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 简单使用

elasticsearch的安装

使用docker安装
通过pull拉取,或者压缩包解压。
更改配置文件,
image.png
image.png
将network.host修改为自己的虚拟机ip。

3.使用docker运行elasticsearch,输入命令$ sudo docker run -dti --name=elasticsearch --network=host -v /home/python/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0

配置

在django框架中需要通过django-haystack来对接搜索引擎的使用,所以务必要在python虚拟环境中安装django-haystack和elasticsearch.

pip3 install django-haystack
pip3 install elasticsearch
1
2
django-haystack是专门给 django 提供搜索功能的。 django-haystack提供了一个统一的API搜索接口,底层可以根据自己需求更换搜索引擎( Solr, Elasticsearch,Whoosh, Xapian 等等),类似于 django 中的 ORM插件,提供了一个操作数据库接口,但是底层具体使用哪个数据库是可以在配置文件中进行设置的。

在django中可以通过使用haystack来调用Elasticsearch搜索引擎。而在drf框架中,也有一个对应的drf-haystack模块,是django-haystack进行封装处理的。

setting中的配置

注册apps

INSTALLED_APPS = [

'haystack',

]

Haystack

HAYSTACK_CONNECTIONS = {

'default': {
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    # elasticsearch运行的服务器ip地址,端口号默认为9200
    'URL': 'http://192.168.153.162:9200/', # 配置 IP:port
    # elasticsearch建立的索引库的名称,一般使用项目名作为索引库
    'INDEX_NAME': 'object_name',
},

}

设置在Django运行时,如果有数据产生变化(添加、修改、删除),

haystack会自动让Elasticsearch实时生成新数据的索引

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

模型类的创建

完成索引类的创建,一定要在对应的app下创建索引文件indexes_search.py(注:必须是这个名字,否则无法索引)。
from haystack import indexes

from .models import SKU

class SKUIndex(indexes.SearchIndex, indexes.Indexable):

"""SKU索引数据模型类"""
text = indexes.CharField(document=True, use_template=True)

def get_model(self):
    """返回建立索引的模型类"""
    return SKU

def index_queryset(self, using=None):
    """返回要建立索引的数据查询集"""
    return self.get_model().objects.filter(is_launched=True)

要在templates下创建text文件
具体在templates/search/indexes/goods/sku_text.txt文件中定义

{{ object.title }}
{{ object.content }}
{{ object.id }}

1
2
3
4
此模板指明SKU的id、name、caption作为text字段的索引值来进行关键字索引查询。

手动生成初始索引
$ python manage.py rebuild_index

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
单细胞分析|映射和注释查询数据集
单细胞分析|映射和注释查询数据集
|
机器学习/深度学习 弹性计算 TensorFlow
在阿里云上打造强大的模型训练服务
随着人工智能技术的迅猛发展,模型训练服务变得愈发关键。阿里云提供了一系列强大的产品,使得在云端轻松搭建、优化和管理模型训练变得更加便捷。本文将详细介绍如何使用阿里云的相关产品构建高效的模型训练服务。
1014 0
|
Docker 容器 数据格式
Docker 修改镜像源地址
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80417198 我的Docker 版本为 1.
42152 0
|
JSON 缓存 测试技术
Python 中的 OrderedDict
【8月更文挑战第23天】
394 0
|
10月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
152 1
|
SQL 测试技术 API
SqlAlchemy 2.0 中文文档(一)(1)
SqlAlchemy 2.0 中文文档(一)
450 1
SqlAlchemy 2.0 中文文档(一)(1)
|
SQL 存储 数据库
SqlAlchemy 2.0 中文文档(一)(4)
SqlAlchemy 2.0 中文文档(一)
244 1
|
SQL 存储 数据库
SqlAlchemy 2.0 中文文档(一)(3)
SqlAlchemy 2.0 中文文档(一)
242 1
|
SQL 数据库 数据库管理
SqlAlchemy 2.0 中文文档(一)(2)
SqlAlchemy 2.0 中文文档(一)
295 1
|
数据采集 Web App开发 存储
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
860 0