我的Haystack有2台服务器:
我的问题是从 Server2 到 Server1 进行查询时的分页:
但这不是最佳选择,如果查询返回10.000个对象,查询将很慢。
我知道您可以将一些查询中的值(大小,从和发送到)发送给elasticsearch,但是我不知道是否可以使用 Haystack 来实现,我已经检查了文档并将其谷歌搜索一无所获。
编辑
SearchQuerySet()[10000:10010]
,是否可能只要求这10个项目? 编辑2
我在Haystack Docs上找到了这个:
似乎有一个功能可以做我想做的事情:
然后我尝试去做:
from haystack.query import SearchQuerySet
sqs = SearchQuerySet()
sqs.query.set_limits(low=0, high=4)
sqs.filter(content='anything')
结果是完整列表,就像我从不添加set_limit行最佳答案
Haystack的工作方式与Django ORM有所不同。限制查询集后,应调用get_results()以获得有限的结果。这实际上很聪明,因为它避免了来自Elastic的多个请求。
例子:
# Assume you have 800 records.
sqs = SearchQuerySet()
sqs.query.set_limits(low=0, high=4)
len(sqs) # Will return 800 records
len(sqs.get_results()) # Will return first 4 records.
希望对您有所帮助。
关于django - 干草堆和Elasticsearch : Limit number of results,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27777766/