使用Django中的Elasticsearch进行全文搜索(Full Text Search)
首先要安装 Elasticsearch:
pip install elasticsearch
然后在 Django 项目的 settings.py
文件中配置 Elasticsearch:
ELASTICSEARCH_DSL = { 'default': { 'hosts': 'localhost:9200' }, } USE_TZ = False
接下来定义一个 Elasticsearch 对象,用于查询:
from elasticsearch_dsl import Search from elasticsearch_dsl.query import Q from elasticsearch_dsl.connections import connections from django.conf import settings # 连接 Elasticsearch connections.create_connection(hosts=settings.ELASTICSEARCH_DSL['default']['hosts']) # 定义 Elasticsearch 查询对象 s = Search(index='my_index')
现在我们可以进行全文搜索了。以下示例使用 pidancode.com
作为搜索关键字:
# 构造搜索条件 q = Q('multi_match', query='pidancode.com', fields=['title', 'content']) # 执行搜索 response = s.query(q).execute() # 输出搜索结果 for hit in response: print(hit.title, hit.content)
这样就可以根据关键字 pidancode.com
在 title
和 content
字段中进行全文搜索,并输出搜索结果的标题和内容。如果搜索关键字是字符串 皮蛋编程
,只需要将查询条件改为:
q = Q('multi_match', query='皮蛋编程', fields=['title', 'content'])
相关文章