描述功能:
新的search_after
参数非常适合通过巨大的结果集进行分页! 我正在尝试使用 Relay 连接规范将 ElasticSearch 连接到 GraphQL API,但我遇到了一个问题,即我无法确定当前集之前或之后是否有其他结果。 我可以暂时通过在集合后端检索一个比我需要的结果多一个结果来解决它,然后在集合之前对单个结果执行另一个查询(颠倒顺序)。 不过,这似乎很笨拙。 是否有可能找到一种方法来确定前向和后向记录的存在,或者确定当前集合在整体结果中的位置? 我可以看到这是许多用例的要求。
鉴于事物的实现方式,我们理论上可以计算我们忽略了多少文档,因为比较小于search_after
中提供的排序值。 但是,这意味着更新对搜索 API 的响应以包含此信息,修改 Lucene 收集器以公开此偏移量,并且更一般地将此信息从收集器传播到搜索响应,因此这不是一个微不足道的更改。 我建议我们将这个问题保持开放一段时间,以衡量它会引起多少兴趣。
抄送@elastic/es-search-aggs
由于我们对这个问题没有太大兴趣,并且因为它需要进行大量修改,并且有一个从客户端大小的解决方法,我将关闭这个问题。
最有用的评论
鉴于事物的实现方式,我们理论上可以计算我们忽略了多少文档,因为比较小于
search_after
中提供的排序值。 但是,这意味着更新对搜索 API 的响应以包含此信息,修改 Lucene 收集器以公开此偏移量,并且更一般地将此信息从收集器传播到搜索响应,因此这不是一个微不足道的更改。 我建议我们将这个问题保持开放一段时间,以衡量它会引起多少兴趣。