elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" />

Django 正在索引不应被索引的对象

Django 正在索引不应被索引的对象,django,elasticsearch,django-haystack,Django,elasticsearch,Django Haystack,我有一个非常基本的对象,我正在搜索。我的理解是,索引对象是基于index_queryset方法过滤的。我想索引唯一的问题,不是草案和作者决定出版。但是,不符合此条件的对象将被编入索引,当返回此对象的搜索结果时,我对其调用.object,我将得到一个 ERROR Object could not be found in database for SearchResult '<SearchResult: qna.question (pk=u'869')>' 但是在我更新索引并运行 Se

我有一个非常基本的对象,我正在搜索。我的理解是,索引对象是基于index_queryset方法过滤的。我想索引唯一的问题,不是草案和作者决定出版。但是,不符合此条件的对象将被编入索引,当返回此对象的搜索结果时,我对其调用.object,我将得到一个

ERROR Object could not be found in database for SearchResult '<SearchResult: qna.question (pk=u'869')>'
但是在我更新索引并运行

SearchQueyset().filter(content="shouldn't show")

我得到了一个搜索结果,其中的对象为is_draft=false,当我搜索\u result.object时,我得到了那个错误。我错过什么了吗?谁能给我解释一下吗

也许您需要运行
重建索引
,而不是
更新索引
?您的搜索索引中似乎有一个旧对象需要清除。

因此运行update\u index可以解决此问题。但是,我将其设置为使用信号处理器。我一直都有这套。如何在搜索索引中保留旧对象?我认为index_queryset函数不适用于信号处理器(尽管我可能错了)。您可能必须使用自定义信号处理器来排除is_draft=False的对象
SearchQueyset().filter(content="shouldn't show")