如何在弹性查询结果中滚动,Python

时间:2019-05-02 23:49:48

标签: python elasticsearch

我正在查询我的弹性搜索服务器并将其限制为100个结果,但是可能会有5000多个结果,但是为了提高速度,我不想让试图大量发送它的用户连接超载。

data = es.search(index=case_to_view, size=100,body={
   "query": {
       "range" : {
           "someRandomFIeld" : {
               "gte" : 1,
           }
       }
   }
})

这是做两件事,获取具有字段类型的结果,并且仅当该字段类型的值大于等于1时才获取结果。

data['hits']['total'] # 5089

如何让用户从同一查询中获得下一个结果,即后100个,前100个,等等

1 个答案:

答案 0 :(得分:2)

您将要利用“来源”和“大小”属性。

您可以在7.0文档中看到它。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html

ex:

SELECT ?sLabel {
    SERVICE wikibase:mwapi {
        bd:serviceParam wikibase:api "EntitySearch".
        bd:serviceParam wikibase:endpoint "www.wikidata.org".
        bd:serviceParam mwapi:search "natural language processing".
        bd:serviceParam mwapi:language "en".
        ?item wikibase:apiOutputItem mwapi:item.
        ?num wikibase:apiOrdinal true.
    }
    ?s wdt:P279|wdt:P31 ?item .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
ORDER BY ?num
LIMIT 10