使用Django中的Elasticsearch进行全文搜索(Full Text Search)

2023-04-11 00:00:00 django elasticsearch 全文

首先要安装 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.comtitlecontent 字段中进行全文搜索,并输出搜索结果的标题和内容。如果搜索关键字是字符串 皮蛋编程,只需要将查询条件改为:

q = Q('multi_match', query='皮蛋编程', fields=['title', 'content'])

相关文章