首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ElasticSearch 深度分页总结

ElasticSearch 深度分页总结

作者头像
叨叨软件测试
发布2021-04-23 10:34:30
发布2021-04-23 10:34:30
1.3K0
举报
文章被收录于专栏:叨叨软件测试叨叨软件测试

背景

我们的应用是采用NLPchina开源的elasticsearch-sql插件来进行查询分页和导出,由于ElasticSearchmax_result_window的限制,在深度分页和大批量数据导出时就会出现问题,故简单研究下。

ElasticSearchmax_result_window默认为10000条,当使用elasticsearch-sql执行select * from test limit 10000,1时,ElasticSearch就返回错误。

```ElasticSearch``` 分页总结

ElasticSearch 是搜索引擎,从搜索的意义上来说,如果筛选条件或前几页都找不到需要的数据,继续深度分页也不会找到想要的数据。

ElasticSearch 不要做深度分页和随机深度跳页。

ES 分页建议

  • 增加默认的筛选条件,尽量减少数据量的展示,比如:最近一个月;
  • 限制总分页数,比如:淘宝、京东仅显示100页查询结果,百度仅显示76页;
  • 修改跳页的展现方式,改为滚动显示,或小范围跳页,比如:谷歌、百度的小范围跳页。

小范围跳页示例

ES 三种分页比较

  • from+size:适用于浅分页(数据量小于max_result_window),在增大max_result_window情况下,也可实现深度分页,但效率低下,可能出现 OOM。
  • scroll:适用于数据导出,基于生成的历史快照查询,对于数据的变更不会反映到快照上。
  • search_after:适用于实时请求和高并发场景(深度分页+排序),由于每一页的数据依赖于上一页最后一条数据,所以无法做到随机跳页(滚动显示)。

elasticsearch-sql 分页

分页(limit:深度跳页和深度随机跳页无法实现,但可做限制页数+小范围跳页的替代方案。

导出

  • scroll:支持scroll方式,具体 sql 语句示例:SELECT /! USE_SCROLL(100,30000)/ firstname , balance FROM accounts
  • csv-result:有个 csv 导出的实验类功能(未验证)。

https://github.com/NLPchina/elasticsearch-sql/wiki

参考文章

  • https://juejin.cn/post/6850037275456339975
  • https://www.cnblogs.com/jpfss/p/10815172.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叨叨软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • ```ElasticSearch``` 分页总结
    • ES 三种分页比较
    • elasticsearch-sql 分页
  • 参考文章
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档