【发布时间】:2015-07-22 08:24:05
【问题描述】:
我使用 Elasticsearch 作为我的后端。
在我的一个观点中,我做了一个这样的过滤器:
SearchQuerySet().filter(...)
它返回,比如说,55 个对象。
然后,我在 for 循环中迭代结果以对每个对象执行一些操作。
结果符合预期。但是,当我查看 elasticsearch 的日志时,我会看到如下内容:
[12:38:16,504] {"time":"2015-07-22T12:38:16.504+05:00","starttime":"2015-07-22T12:38:16.502+05:00","localaddr":"127.0.0.1","localport":9200,"remoteaddr":"127.0.0.1","remoteport":58718,"scheme":"http","method":"GET","path":"/haystack/modelresult/_search","querystr":"_source=true","code":200,"status":"OK","size":13633,"duration":2,"year":"2015","month":"07","day":"22","hour":"12","minute":"38","dow":"Wed","cluster":"elasticsearch_venta","data":"{\"query\": {\"filtered\": {\"filter\": {\"terms\": {\"django_ct\": [\"items.item\"]}}, \"query\": {\"match_all\": {}}}}, \"from\": 0, \"size\": 10}"}
[12:38:16,509] {"time":"2015-07-22T12:38:16.509+05:00","starttime":"2015-07-22T12:38:16.508+05:00","localaddr":"127.0.0.1","localport":9200,"remoteaddr":"127.0.0.1","remoteport":58718,"scheme":"http","method":"GET","path":"/haystack/modelresult/_search","querystr":"_source=true","code":200,"status":"OK","size":13719,"duration":1,"year":"2015","month":"07","day":"22","hour":"12","minute":"38","dow":"Wed","cluster":"elasticsearch_venta","data":"{\"query\": {\"filtered\": {\"filter\": {\"terms\": {\"django_ct\": [\"items.item\"]}}, \"query\": {\"match_all\": {}}}}, \"from\": 10, \"size\": 10}"}
[12:38:16,515] {"time":"2015-07-22T12:38:16.515+05:00","starttime":"2015-07-22T12:38:16.513+05:00","localaddr":"127.0.0.1","localport":9200,"remoteaddr":"127.0.0.1","remoteport":58718,"scheme":"http","method":"GET","path":"/haystack/modelresult/_search","querystr":"_source=true","code":200,"status":"OK","size":13429,"duration":2,"year":"2015","month":"07","day":"22","hour":"12","minute":"38","dow":"Wed","cluster":"elasticsearch_venta","data":"{\"query\": {\"filtered\": {\"filter\": {\"terms\": {\"django_ct\": [\"items.item\"]}}, \"query\": {\"match_all\": {}}}}, \"from\": 20, \"size\": 10}"}
也就是说,SearchQuerySet 每次返回 10 个项目。
我尝试了load_all,但没有帮助。
我认为这是因为 SearchQuerySet 返回了分页结果。
如何将 elasticsearch 的请求数量减少到一个,即一次获取所有项目?
【问题讨论】:
标签: python django elasticsearch pagination django-haystack