elasticsearch 多匹配查询分页
我试图弄清楚如何使用elasticsearch通过多匹配查询完成分页elasticsearch 多匹配查询分页,elasticsearch,pagination,elasticsearch,Pagination,我试图弄清楚如何使用elasticsearch通过多匹配查询完成分页 滚动和搜索API之后的内容似乎不起作用滚动不适用于根据的实时用户请求search\u after要求每个id有一个唯一的字段,并要求您根据对该字段进行排序,但使用多匹配查询时,基本上是按分数排序 因此,到目前为止,我唯一想到的是做以下事情: 发回上一个文档id+分数,并将分数用作排序字段。但是,如果在两个查询之间添加了其他文档,则可能会返回重复的文档。如果要分页,第一个选项是在查询中使用from和size参数 可以使用from
滚动
和搜索
API之后的内容似乎不起作用<代码>滚动不适用于根据的实时用户请求search\u after
要求每个id有一个唯一的字段,并要求您根据对该字段进行排序,但使用多匹配查询时,基本上是按分数排序
因此,到目前为止,我唯一想到的是做以下事情:
发回上一个文档id+分数,并将分数用作排序字段。但是,如果在两个查询之间添加了其他文档,则可能会返回重复的文档。如果要分页,第一个选项是在查询中使用
from
和size
参数
可以使用from和size对结果进行分页
参数。from参数定义从第一个点的偏移
要获取的结果。size参数允许您配置
要返回的最大点击量
虽然from和size可以设置为请求参数,但它们也可以
可以在搜索正文中设置。从默认值到0,以及大小默认值
到10岁
请注意,from+大小不能超过index.max\u result\u窗口
索引设置,默认为10000。查看滚动条或搜索
API提供了更有效的深度滚动方式
如果您不需要对超过10k的结果进行分页,这是您的最佳选择。max\u result\u窗口可以修改,但性能会随着所选页码的增加而降低
当然,如果在用户分页过程中添加了某些文档,它们将被添加,并且您的分页可能会有点不准确。如果新文档添加到开头,您将如何处理?即,索引了10个新文档,这些文档在查询中得分最高。然后“跳过”和“从”不起作用。哎呀,我没有读到你答案的最后一部分。是的,这很有道理。我刚刚决定返回最多500或1000个结果(因为我只是返回ID),并让客户端对ID列表进行分页。