Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-在Elasticsearch结果上显示模型数据_Python_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Python,Django,elasticsearch" /> elasticsearch,Python,Django,elasticsearch" />

Python Django-在Elasticsearch结果上显示模型数据

Python Django-在Elasticsearch结果上显示模型数据,python,django,elasticsearch,Python,Django,elasticsearch,我正在做一个预订网站,我已经实现了elasticsearch。我的搜索工作做得很好,但现在我有点困在一个问题上 我想做的是在搜索结果中显示用户搜索的公寓的最低价格 价格存储在“公寓价格”模型中: class公寓价格(models.Model): 公寓=模型.ForeignKey(公寓,在相关的\u delete=“models.CASCADE”上) price\u start\u date=models.DateField(blank=True,null=True) price\u end\u

我正在做一个预订网站,我已经实现了elasticsearch。我的搜索工作做得很好,但现在我有点困在一个问题上

我想做的是在搜索结果中显示用户搜索的公寓的最低价格

价格存储在“公寓价格”模型中:

class公寓价格(models.Model):
公寓=模型.ForeignKey(公寓,在相关的\u delete=“models.CASCADE”上)
price\u start\u date=models.DateField(blank=True,null=True)
price\u end\u date=models.DateField(blank=True,null=True)
price=models.IntegerField()
定义(自我):
返回self.partment.title
这是用于实际搜索的我的文档和视图:

搜索视图:

def搜索(请求):
公寓=公寓.objects.all()
q=请求.GET.GET('q')
如果q:
公寓=ApartmentDocument.search().query(“匹配”,标题=q)
其他:
公寓=“”
返回render(请求'search/search_elastic.html',{'partments':partments,“q”:q,})
elasticsearch文档:

公寓=索引(“公寓”)
@文件公寓
类别公寓文档(文档):
Django类:
模型=公寓
字段=[
“头衔”,
“id”,
“卧室”,
“列出日期”,
]
我已尝试将公寓id传递到搜索视图,但无法使其工作

谁能给我指一下正确的方向吗?如何从ES查询访问模型数据


谢谢大家!

如果您已经在elastic中存储了价格,您可以提出第二个请求,因为elastic与价格无关。您必须搜索与返回的公寓ID列表相关的所有价格。 如果使用公寓id字段存储价格,则可以使用所有id进行“术语”查询

您将得到两个结果集,一个是公寓(您的实际公寓),另一个是公寓价格。您需要循环显示正确的数据

------评论------

我认为在您的搜索视图中存在一个问题,您在数据库中进行搜索: 公寓=公寓.objects.all()

然后取一个参数q(我希望它是公寓的标题) q=请求.GET.GET('q')

在elastic中进行搜索,并用json结果覆盖公寓,这是一个数据库结果。。。您将无法在模板中处理结果

您首先需要删除对数据库的第一个调用,并在视图中仅使用elastic,否则处理两种类型的对象将是一件痛苦的事情,因为您可以在数据库模型对象上拥有您可能不会在elastic对象中定义的属性。 我们使用了近7年的elastic,我们很难用两种模型来管理视图。现在我们主要在视图中使用elastic,这取决于您的使用情况,但不要融化这两个模型,而是选择一个。
在您的搜索中,如果您计划使用弹性模型,请删除数据库调用,如果在另一个搜索中您使用数据库,请不要使用弹性模型。

这是否起作用?您使用的是elasticsearch py还是elasticsearch dsl?