当搜索查询返回超过10000个文档时,如何在ElasticSearch中跳转到最后一页

qlzsbp2j  于 12个月前  发布在  ElasticSearch
关注(0)|答案(2)|浏览(164)

我正在使用搜索查询从ElasticSearch中检索文档,它返回了近50k文档。我有一个UI,每页呈现100个文档,并有一个按钮跳转到最后一页。每当我尝试在最后一页上点击时,我都会得到下面的错误结果窗口太大我不想增加索引。max_result_window = 10000

vsikbqxv

vsikbqxv1#

我也遇到过类似的问题,在search after API中找到了一个解决方法,它不受10k元素限制的影响,因此在你知道你可能有更多的元素,但仍然想渲染那里的所有元素的情况下,它会很有用。由于相对容易获取的能力,没有过滤器或搜索的硬性限制,代价是不太方便的分页,这还是很容易做到的
使用起来很麻烦,因为:

  • 搜索的所有索引都应按所有索引中的唯一字段排序
  • “from”查询参数(页面)应设置为0
  • 从该字段的前一页上的最后一个元素发送“search after”值

您将不再在页面中操作数字,而只是页面的最后一个元素,以及您希望在该元素之后看到的页面大小
这并不是关于如何跳转到最后一个的答案,但这是一个不改变结果窗口大小的解决方案,或者将结果文档限制为10k

e4eetjau

e4eetjau2#

我不明白你在Elastic搜索中跳到最后一页是什么意思。ES索引所有文档,没有“页面”的概念。
另一方面,如果你在获取记录时遇到问题,请阅读下面的内容:
使用“size”字段指定您希望在响应中包含的文档数。请记住,“size”字段可以接受的最大值是10000。因此,在单个ES请求中获取的文档数不可能超过10000。如果您希望获取超过10k个文档,请使您的UI使用ES滚动API(分页)。https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

相关问题