商品搜索
elasticsearch + haystack
elasticsearch 是 一种搜索引擎,搜索引擎会对数据构建索引来进行搜索。
使用 Docker 安装 elasticsearch 及其扩展
拉取镜像
修改配置文件中 ip 地址为本地 ip
创建 docker 容易来运行
使用 haystack 对接 elasticsearch
haystack 为 Django 提供了模块化的搜索。它的特点是统一的,熟悉的 API,可以让你不修改代码的情况下使用不同的搜索后端。
在 Django 中通过使用 haystack 来调用 elasticsearch 搜索引擎
- 安装 haystack 和 elasticsearch,注册应用,添加配置文件
在配置文件中配置haystack使用的搜索引擎后端
# Haystack
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://192.168.195.140:9200/', # 此处为elasticsearch运行的服务器ip地址,端口号固定为9200
'INDEX_NAME': 'meiduo', # 指定elasticsearch建立的索引库的名称
},
}
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
注意:
HAYSTACK_SIGNAL_PROCESSOR 的配置保证了在Django运行起来后,有新的数据产生时,haystack仍然可以让Elasticsearch实时生成新数据的索引
-
创建索引类,指明让搜索引擎对哪些字段建立索引,也就是可以通过哪些字段的关键字来检索数据。
-
在 templates 目录中创建 text 字段使用的模板文件,此模板指明当将关键词通过text参数名传递时,可以通过sku的name、caption、id来进行关键字索引查询。
-
手动生成初始索引
python manage.py rebuild_index
-
创建 haystack 序列化器, 创建序列化器, 添加路由