Elasticsearch 分页 - 最后一页返回太多结果

Jam*_*ker 4 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();
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 8

fromES查询中的参数不是页码而是偏移量。所以如果你想要第 11 页,from必须是 110(假设size是 10)而不是 11。

因此,您可以继续使用 传递页码@PathParam,但传递给的值setFrom()必须是page * size,而不仅仅是page.

因此,对于page = 0,您将调用setFrom(0),对于page = 1您将调用setFrom(10)等,对于page = 11(即第 12 页),您将调用setFrom(110)。