准备工作:
在Linux系统下安装Docker环境:
第一步:
安装好Docker后,安装Elasticsearch容器
百度网盘:https://pan.baidu.com/s/1KD1wx4ZVIvM3bjVCMNCcjw 提取码:8888
1、把我分享的百度网盘文件下载下来。把里面的这两个文件复制到里面。
2、然后把给上传到你的服务器上
3、在服务器上进入到elasticsearch-ik-2.4.6_docker文件夹里面的config文件夹的elasticsearch.yml文件里:
4、上面改好后,在当前的config目录下:分别执行下面这两条指令
pwd # 查看当前config绝对路径
sudo docker run -dti --name=elasticsearch --network=host -v 上面pwd得到的config绝对路径 delron/elasticsearch-ik:2.4.6-1.0
这样子就把Elasticasearch容器下载下来了
第二步:
①分别把这两个包下载下来:
pip install django-haystack
pip install elasticsearch==2.4.1 # 安装2.4.1是因为上面安装的elasticsearch版本就是2.4的版本
②
在Django项目主配置文件setting.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'haystack', # 全文检索。
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://安装elasticsearch容器ip:9200/', #端口号固定为9200
'INDEX_NAME': 'lgshop', # 随便取,这是Elasticsearch建立的索引库的名称
},
}
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
# 搜索出来的结果,显示5条
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 5
在项目的主urls.py:
path(r'search/', include('haystack.urls')), # 前面哪个r加不加都无所谓
③创建索引类
在项目随便一个app下创建一个文件名必须为search_indexes.py
from haystack import indexes
from .models import 搜索的数据所属创建表类名如SKU
# 搜索的数据就是你在前端根据关键字从哪个表里面取出来显示
class 类名(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):
"""返回要建立索引的数据查询集,一般查询条件是all()"""
return self.get_model().objects.查询条件
④创建text字段索引值模板文件
在templates文件夹里面创建一个文件:规则
templates/search/indexes/上面app名字/模型类名小写_text.txt
在这个’ 模型类名小写_text.txt ’文件里面加上:
{{ object.字段1 }}
{{ object.字段2 }}
{{ object.字段3 }}
⑤创建搜索后的页面:
⑥打开cmd去到manage.py父目录下执行:
python manage.py rebuild_index
这样子全文搜索就弄好了。