Haystack AutoQuery为什么调用两次?

问题描述:

我正在使用ElasticSearch和Haystack来实现搜索功能。Haystack AutoQuery为什么调用两次?

配置一切后,我创建了从0​​继承的自定义视图:

class CustomSearchView(SearchView): 
    """ 
    Search view of haystack. 
    """ 
    template_name = 'search/search.html' 
    form_class = ItemSearchForm 
    context_object_name = 'items' 

和urls.py:

urlpatterns = patterns(
    '', 
    url(r'^', CustomSearchView.as_view(), name='search'), 
) 

搜寻工作正常。但是我注意到每次搜索时都会发送两个请求到ElasticSearch。我可以看到在elasticsearch_requests.log

经过一番分析,我发现AutoQuery来自haystack.inputs的视图被调用两次。

我想将其降低为1,这样就不会对elasticsearch后端造成额外的压力。

为什么被称为两次?如何防止这种情况发生?

根据docs haystack每个请求只加载10个项目。但是你可以通过在你的settings.py中设置HAYSTACK_ITERATOR_LOAD_PER_QUERY变量来改变它。 希望有所帮助。