其他分享
首页 > 其他分享> > Elasticsearch对接Django

Elasticsearch对接Django

作者:互联网

1.定义

特点:

分词说明

2.安装

1.获取Elasticsearch-ik镜像

# 从仓库拉取镜像
$ docker image pull delron/elasticsearch-ik:2.4.6-1.0
# 解压教学资料中本地镜像
$ docker load -i elasticsearch-ik-2.4.6_docker.tar

2**.配置Elasticsearch-ik**

1.将elasticsearc-2.4.6目录拷贝到home目录下
2.修改/home/python/elasticsearc-2.4.6/config/elasticsearch.yml第54行
3.更改ip地址为本机真实ip地址(network.host)

3.使用Docker运行Elasticsearch-ik

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

3.Haystack

1.介绍

Haystack是在Django中对接搜索引擎的框架,搭建了用户和搜索引擎之间的沟通桥梁

Haystack 可以在不修改代码的情况下使用不同的搜索后端(比如 Elasticsearch,Whoosh,Solr等等)

2.安装

pip install django-haystack
pip install elasticsearch==2.4.1

3.修改配置

#注册应用
INSTALLED_APPS = [
    'haystack', # 全文检索
]

#配置Haystack为搜索引擎后端
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://192.168.103.158:9200/', # Elasticsearch服务器ip地址,端口号固定为9200
        #名字必须小写,否者报错
        'INDEX_NAME': 'online_shop', # Elasticsearch建立的索引库的名称
    },
}


# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

#设置每页返回数据条数
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 5

重要提示:

HAYSTACK_SIGNAL_PROCESSOR 配置项保证了在Django运行起来后,有新的数据产生时,Haystack仍然可以让Elasticsearch实时生成新数据的索引

4.添加路由

url(r'^search/', include('haystack.urls')),

5.创建索引类

1.创建索引类

通过创建索引类,来指明让搜索引擎对哪些字段建立索引,也就是可以通过哪些字段的关键字来检索数据

对需要进行全文检索的model信息,在其所在的app应用中新建 search_indexes.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)

索引类SKUIndex说明:

2.创建text字段索引值模板文件

3.创建search.html

4.手动生成初始索引

 python manage.py rebuild_index

标签:search,text,对接,Django,索引,Elasticsearch,result,elasticsearch
来源: https://blog.csdn.net/weixin_44689630/article/details/123613891