java Elasticsearch分页最后一页返回太多结果
我的Elasticsearch查询返回111个结果,这意味着如果我翻页浏览这些结果(每页10个结果),我应该有12页:11整页,1页只有一个结果
然而,我的最后一页仍然返回10个结果。它返回了预期的最后一个结果,但也返回了上一页的9个结果。如何禁用此行为并让其按预期返回单个结果
我使用的是Java API,代码如下:
SearchResponse response = client.prepareSearch("my_index")
.setTypes("my_output")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.queryStringQuery(query))
.setFrom(page).setSize(size)
.execute()
.actionGet();
# 1 楼答案
ES查询中的
from
参数不是页码,而是偏移量。所以如果你想要第11页,from
必须是110(假设size
是10),而不是11因此,可以使用
@PathParam
继续传递页码,但传递给setFrom()
的值必须是page * size
,而不仅仅是page
因此,对于
page = 0
,您将调用setFrom(0)
,对于page = 1
,您将调用setFrom(10)
,等等,对于page = 11
(即第12页),您将调用setFrom(110)