首页 > 解决方案 > django-elasticsearch-dsl 无法过滤多个模型字段

问题描述

模型.py

class PostJob(models.Model):
    job_title                   = models.CharField(max_length=256)
    job_description             = models.TextField()
    key_skills                  = models.TextField()

    def __str__(self):
        return self.job_title

文件.py

from django_elasticsearch_dsl import DocType, Index
from .models import PostJob

jobs = Index('jobs')

@jobs.doc_type
class JobsDocument(DocType):
    class Meta:
        model = PostJob

        fields = [
            'job_title',
            'job_description',
            'key_skills',
        ]

视图.py

from .documents import JobsDocument

def search_jobs(request):
    q = request.GET.get('q')
    if q is None:
        return JsonResponse({"code":500,"msg":"query sting not found"})
    if q:
        Q = JobsDocument.search().query
        jobs = Q("match", key_skills=q) or Q("match", job_title=q)
        lst=[]
        dict ={}
        for i in jobs:
            dict["job_title"]                   = i.job_title
            dict["description"]                 = i.job_description
            dict["key_skills"]                  = i.key_skills
            lst.append(dict.copy())
    return JsonResponse(lst,safe=False)

在使用 'django-elasticsearch-dsl' 的 django 中,我正在尝试使用多个模型字段进行搜索。

在这里,我想使用带有key_skillsjob_title的多个字段进行过滤, 但它仅带有 key_skills但与job_description不匹配

对于job_title,如果我的job_title工作是python 开发人员,如果我只搜索开发人员,它就不会出现。当我用空白完全搜索python开发人员时,它就来了

请看看它..

标签: djangoelasticsearch

解决方案


推荐阅读