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变量来改变它。 希望有所帮助。