Elasticsearch中极限的奇怪行为

时间:2015-06-17 18:22:32

标签: python elasticsearch

我尝试了两个查询。第一个看起来像这样(它只列出所有数据):

# listing 1
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q, F
....
.... connection etc
s = Search(using=db,index="reestr")
rows = s.execute()
for r in rows:
    print(r)

listing 1打印出数据库中的所有文档。奇怪的是,当我试图限制这样的文件数量时:

# listing 2
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q, F
....
.... connection etc
s = Search(using=db,index="reestr").filter(F("limit", value=1))
rows = s.execute()
for r in rows:
    print(r)

在这种情况下,它会打印多个文档,但不会按预期打印(我希望通过设置value=1)。那么,这有什么不对,以及如何限制Elasticsearch

中的文件数量

1 个答案:

答案 0 :(得分:1)

limit filter不限制返回的文档数量,只限制查询在每个分片上执行的文档数量。

如果您想限制返回的文档数量,则需要使用size参数,或者使用Python slicing API这样的情况:

# listing 1
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q, F
....
.... connection etc
s = Search(using=db,index="reestr")
s = s[0:1]                <------  limit to only one document
rows = s.execute()
for r in rows:
    print(r)