我是ES的新手,并且对其滚动文档感到困惑.从文档" 滚动不是用于实时用户请求,而是用于处理大量数据,例如,为了将一个索引的内容重新索引到具有不同配置的新索引中 ".
然而......在同一页面上,它表示不使用from()和size()进行分页,因为它" 非常低效 ".在描述搜索的Java API页面上,它显示了通过Scroll进行分页的示例.
所以,假设我想要一次显示排序的搜索结果,一个页面,建议使用哪种方法:from/size还是Scrolling?
您可以使用search_after。基本流程如下:
search_after,以告诉 Elasticsearch 仅返回指定文档(日期)之后的文档。这样,您的结果就可以在任何更新或文档删除的情况下保持稳健并保持准确。您还可以避免从初始文档结果开始的每个查询的滚动成本(您可能已经读过)和from/size方法的线性时间操作成本。
请参阅文档以获取更多信息和实现细节。
from/size当您想进行深度分页或要按页面请求大量结果时,效率非常低。
原因是结果首先在每个分片上排序,然后所有这些结果由请求协调器节点收集,合并和排序。随着页面尺寸或等级的增加,这变得越来越昂贵。您会在此处找到一个很好的例子。
您可以限制用户查询的大小(例如,约1000个结果),并且可以使用from/size。
如果不是一种选择,您仍然可以使用滚动,但是您将失去诸如聚合之类的某些功能,而保持搜索上下文的生存需要付出一定的代价。
| 归档时间: |
|
| 查看次数: |
4965 次 |
| 最近记录: |