我使用Python 2.7和Elasticsearch-DSL包来查询我的弹性集群。
尝试在查询中添加“from和limit”功能,以便在我的FE中进行分页,这将显示文档弹性返回,但“from”不正确(即我没有正确地使用它,我的配偶)。
相关代码为:
s = Search(using=elastic_conn, index='my_index'). \
filter("terms", organization_id=org_list)
hits = s[my_from:my_size].execute() # if from = 10, size = 10 then I get 0 documents, altought 100 documents match the filters.
我的索引包含100份文件。即使我的过滤器匹配所有结果(即没有过滤掉任何内容),例如,如果我使用my_from = 10
和my_size = 10
,那么我也不会得到任何命中(没有匹配的文档)
为什么会这样呢?我是不是用错了形式?
文件规定:
from和size参数。from参数定义从要获取的第一个结果的偏移量。size参数允许您配置要返回的最大命中数。
这看起来很简单,我错过了什么?
3条答案
按热度按时间yhxst69z1#
这个问题的答案可以在他们的文档中搜索DSL的分页部分找到:
分页
要指定from/size参数,请使用Python切片API:
在Search DSL中正确使用这些参数就像使用Python列表一样,从起始索引到结束索引进行切片。size参数将被隐式地定义为结束索引减去开始索引。
希望这件事能澄清!
jqjz2hbq2#
尝试如下传递
from
和size
参数:icnyk63a3#
从文档中可以看出,存在1对1Map
s[from:size]
。然而事实并非如此,因为在python中splicings[10:10]
只是空的。您需要将其指定为s[10:20]
,即s[from : from+size]
。