ES: 全称 Elasticsearch 开源的搜索引擎,可快速储存、搜索、分析数据
主要特点:
不使用like,而使用全文检索,在特定的任意字段进行检索查询
配和搜索引擎实现,原理:关键词与词条的关系,并记录词条的位置
分词说明:
搜索引擎对数据构建索引时要进行分词处理
而Elasticsearch不支持中文进行分词,而扩展elasticsearch-analysis-ik实现中文分词处理
下载安装
# dock pull 使用docker工具下载
sudo docker image pull delron/elasticsearch-ik:2.4.6-1.0
配置yml文件,修改elasticsearch.yml为本机IP
运行es-ik
sudo docker run -dti --name=elasticsearch --network=host -v /es_path(es的目录)/config delron/elasticsearch-ik:2.4.6-1.0
常用命令
sudo docker container stop elasticsearch 停止es容器
sudo docker container start elasticsearch 启动es容器
使用Haystack来对接django而使用es容器,来搭建用户和搜索引擎间的桥梁
pip install django-haystack # 安装依赖
'haystack' # 注册中间件
扩展haystack
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'#设置每页返回数据条数
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 10
配置路由url
url(r'^search/', include('haystack.urls'))
创建索引类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)
#document 表名该字段是主要进行关键字查询的字段
def get_model(self):
"""返回建立索引的模型类"""
return SKU
def index_queryset(self, using=None):
"""返回要建立索引的数据查询集"""
return self.get_model().objects.filter(is_launched=True)
创建索引模板sku_text.txt文件,通过id name 来作为字段的索引
{{ object.id }}
{{ object.name }}
手动创建初始索引
python manage.py rebuild_index