黑马程序员技术交流社区

标题: 在Django美多商城项目中如何对接 Elasticsearch服务端 [打印本页]

作者: 宫商角徵羽    时间: 2019-6-14 08:45
标题: 在Django美多商城项目中如何对接 Elasticsearch服务端
Haystack扩展建立索引
提示:
思考:
解决方案:
1. Haystack介绍和安装配置
1.Haystack介绍
2.Haystack安装
$ pip install django-haystack$ pip install elasticsearch==2.4.1
3.Haystack注册应用和路由
INSTALLED_APPS = [    'haystack', # 全文检索]url(r'^search/', include('haystack.urls')),
4.Haystack配置
# HaystackHAYSTACK_CONNECTIONS = {    'default': {        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',        'URL': 'http://192.168.103.158:9200/', # Elasticsearch服务器ip地址,端口号固定为9200        'INDEX_NAME': 'meiduo_mall', # Elasticsearch建立的索引库的名称    },}# 当添加、修改、删除数据时,自动生成索引HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
重要提示:
2. Haystack建立数据索引
1.创建索引类
from haystack import indexesfrom .models import SKUclass 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)
2.创建text字段索引值模板文件
{{ object.id }}{{ object.name }}{{ object.caption }}
3.手动生成初始索引
$ python manage.py rebuild_index
3. 全文检索测试
1.准备测试表单
<div class="search_wrap fl">    <form method="get" action="/search/" class="search_con">        <input type="text" class="input_text fl" name="q" placeholder="搜索商品">        <input type="submit" class="input_btn fr" name="" value="搜索">    </form>    <ul class="search_suggest fl">        <li><a href="#">索尼微单</a></li>        <li><a href="#">优惠15元</a></li>        <li><a href="#">美妆个护</a></li>        <li><a href="#">买2免1</a></li>    </ul></div>
2.全文检索测试结果
结论:






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2