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开发人员时,它就会出现
请看看。