django-elasticsearch-dsl无法使用多种模型字段进行过滤

时间:2018-11-27 06:11:25

标签: django elasticsearch

models.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

documents.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',
        ]

views.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中使用“ django-elasticsearch-dsl”,我正在尝试搜索多个模型字段。

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

不匹配

对于 job_title ,如果我的 job_title 工作 python开发人员,如果我仅搜索 developer ,就不会出现。当我完全用空格搜索 python开发人员时,它就会出现

请看看。

0 个答案:

没有答案