有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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)