使用多匹配查询进行分页

时间:2019-06-04 01:16:06

标签: elasticsearch pagination

我正在尝试找出如何使用Elasticsearch通过多匹配查询完成分页。

scrollsearch_after API似乎无法使用。根据{{​​3}},scroll并非实时用户请求。 search_after每个ID都需要一个唯一的字段,并要求您按照documentation在该字段上进行排序,但是使用多重匹配查询时,您基本上是按照得分进行排序。

因此,到目前为止,我唯一想到的就是执行以下操作:

发回最后一个文档ID +分数,并将该分数用作排序字段。但是,如果在两个查询之间添加了其他文档,则可能会返回重复的文档。

1 个答案:

答案 0 :(得分:0)

如果要分页,第一种选择是在查询中使用fromsize参数。 The documentation here

  

可以使用from和size分页结果   参数。 from参数定义相对于第一个的偏移量   您想获取的结果。 size参数允许您配置   返回的最大匹配数。

     

尽管from和size可以设置为请求参数,但它们也可以   在搜索正文中设置。从默认设置为0,大小默认设置   到10。

     

请注意from + size不能大于索引。max_result_window   索引设置,默认为10,000。请参阅“滚动”或“之后搜索”   使用API​​进行深度滚动的更有效方法。

如果您不需要分页显示超过10k的结果,那是您的最佳选择。 max_result_window可以修改,但是性能会随着所选页数的增加而降低。

但是,当然,如果在用户分页期间添加了一些文档,则会添加它们,并且您的分页可能会有些不准确。