Django DRF项目中使用Elasticsearch搜索引擎的相关配置
一.搜索引擎原理
通过搜索引擎进行数据查询时,搜索引擎并不是直接在数据库中进行查询,而是搜索引擎会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据。
我们可以将索引结构数据想象成是字典书籍的索引检索页,里面包含了关键词与词条的对应关系,并记录词条的位置。我们在通过搜索引擎搜索时,搜索引擎将关键字在索引数据中进行快速对比查找,进而找到数据的真实存储位置。
二.Elasticsearch
开源的 Elasticsearch 是目前全文搜索引擎的首选。
它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
Elasticsearch 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
Elasticsearch 是用Java实现的。
搜索引擎在对数据构建索引时,需要进行分词处理。分词是指将一句话拆解成多个单字或词,这些字或词便是这句话的关键词。如
[code]我是中国人。
'我'、'是'、'中'、'国'、'人'、'中国'等都可以是这句话的关键词。
Elasticsearch 不支持对中文进行分词建立索引,需要配合扩展elasticsearch-analysis-ik来实现中文分词处理。
三.使用Docker安装Elasticsearch及其扩展
获取镜像,可以通过网络pull(最好找到压缩包,否则需要付出时间代价)
[code]docker image pull delron/elasticsearch-ik:2.4.6-1.0
修改elasticsearch的配置文件 elasticsearc-2.4.6/config/elasticsearch.yml第54行,更改ip地址为本机ip地址
[code]network.host: xx.xx.xx.xx
创建docker容器运行,以下为我的乌班图下的路径
[code]docker run -dti --network=host --name=elasticsearch -v /home/python/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0
四. 使用haystack对接Elasticsearch
Haystack为Django提供了模块化的搜索。它的特点是统一的,熟悉的API,可以让你在不修改代码的情况下使用不同的搜索后端(比如 Solr, Elasticsearch, Whoosh, Xapian 等等)。
我们在django中可以通过使用haystack来调用Elasticsearch搜索引擎。
1)安装
[code]pip install drf-haystack pip install elasticsearch==2.4.1
drf-haystack是为了在REST framework中使用haystack而进行的封装(如果在Django中使用haystack,则安装django-haystack即可)。
2)注册应用
[code]INSTALLED_APPS = [ ... 'haystack', ... ]
3)配置
在配置文件中配置haystack使用的搜索引擎后端
[code]# Haystack HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 'URL': 'http://xx.xx.xx.xx:9200/', # 此处为elasticsearch运行的服务器ip地址,端口号固定为9200 'INDEX_NAME': 'name', # 指定elasticsearch建立的索引库的名称 }, } # 当添加、修改、删除数据时,自动生成索引 HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
注意:
HAYSTACK_SIGNAL_PROCESSOR 的配置保证了在Django运行起来后,有新的数据产生时,haystack仍然可以让Elasticsearch实时生成新数据的索引
4)创建索引类
通过创建索引类,来指明让搜索引擎对哪些字段建立索引,也就是可以通过哪些字段的关键字来检索数据。
阅读更多- 学习用Node.js和Elasticsearch构建搜索引擎(6):实际项目中常用命令使用记录
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- 01.Django学习之安装,建立项目,传参,MySQL数据库,静态文件配置和模板的使用
- solr搜索引擎安装配置及项目中的使用方法
- 使用eclipse 、tomcat及maven发布项目的相关配置作用
- Django项目中使用全局检索的Elasticsearch+Haystack
- 关于在JavaWeb项目时加入的日志相关的jar包,没有正确配置日志即使用时的警告解决
- 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
- Intellij IDEA使用(十)—— 使用Intellij IDEA导入Eclipse创建的JavaWeb项目并修改相关配置
- 使用VIM开发软件项目 - (4) 保存项目相关配置
- django项目配置使用django-admin-tools
- Intellij IDEA使用(十二)—— 使用Intellij IDEA导入Eclipse创建的Spring+SpringMVC+Mybatis(SSM)整合项目并修改相关配置
- 初探django-演示charade使用virtualenv来配置项目在centos7下部署
- 一个项目中使用到的通用函数库(5) 汉字相关操作
- 转载:CSDN、cnblogs使用Windows Live Writer客户端发布日志时相关配置
- 不同的项目使用同一个配置文件
- web 项目中 在spring中使用log4j 定时刷新log4j配置文件
- web 项目中 在spring中使用log4j 定时刷新log4j配置文件
- 大型Java项目中使用maven进行管理,pom.xml文件中build的配置
- CSDN、CNBLOGS使用Windows Live Writer客户端发布日志时相关配置