为什么Haystack AutoQuery会调用两次?

时间:2015-07-20 10:29:13

标签: python django search elasticsearch django-haystack

我正在使用ElasticSearch和Haystack来实现搜索功能。

配置完所有内容后,我创建了一个继承自SearchView的自定义视图:

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的{​​{1}}视图被调用了两次。

我想将它减少到一个,这样就不会对elasticsearch后端产生额外的压力。

为什么要两次打电话?如何防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

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