当前位置: 首页 > news >正文

es分页边界数据重复问题处理

问题描述:

        运营收到客户反馈,客户在分页查询数据的时候,出现上一页的最后一条跟下一页的第一条出现重复。

问题猜测:

        1、db原始数据重复(排除)

        2、es数据重复(排除)

        3、新增了数据影响到了分页(确定问题)

解决方案:

        1、Time base(基于时间)

        与前端约定每次开始分页查询时给定一个当前时间戳,查询条件带上该时间戳,只查出小于该时间戳的数据。

        2、Point in time

        使用es提供的Point in time,提供基于创建时刻的数据快照,自动过期释放资源,,会占用内存,占用内存较低,适用于实时搜索、分页浏览。

        3、Scroll

        使用es提供的Scroll,基于初始搜索时刻的固定快照,内存较高,需维护完整的搜索上下文,需要手动管理(clear-scroll)以避免内存泄漏,适用于数据导出、批量处理。

方案对比:

Time basePoint in timeScroll
适用场景实时搜索、分页浏览实时搜索、分页浏览数据导出、批量处理
内存占用较低较高
资源管理自动过期释放资源需要手动管理

        上述方案都可以解决翻页数据重复的问题,由于是c端查询,随着用户数量凉的增加,使用快照方式会导致服务器内存紧张,遂放弃2和3,如果在业务能够容忍新数据暂时查询不出来,可以使用1方案来解决。

        上述问题在传统数据库同样存在,并不是es特有,不过es为这种问题提供了解决方案。

        没有最好的方案,只有最适合的。

http://www.dtcms.com/a/107075.html

相关文章:

  • 【ArcGIS微课1000例】0142:如何从谷歌地球保存高清影像图片
  • 开发技巧 flex 布局,使用 gap 设置 flex 项目之间的间距
  • cursor的.cursorrules详解
  • Uniapp 实现微信小程序滑动面板功能详解
  • Graph RAG 面 —— 一种 基于知识图谱的大模型检索增强实现策略
  • 基于Flask框架的动漫推荐系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • Oracle慢查询日志
  • 4月2日工作日志
  • C++__list
  • 第十二章网络规划设计
  • 《系统之美》读后感
  • Python数据分析及相关库(一)
  • 在Qt中直接在构建目录下直接运行.exe文件报错问题分析
  • antvX6自定义 HTML 节点创建与更新教程
  • 使用Leaflet对的SpringBoot天地图路径规划可视化实践-以黄花机场到橘子洲景区为例
  • 爬虫【Scrapy-redis分布式爬虫】
  • SQL 转 PHP Eloquent、Doctrine ORM, 支持多数据库
  • [python] 正则表达式
  • Enovia许可类型及其区别
  • 蓝桥杯 web 知识点集合
  • ngx_sprintf
  • Nginx 核心配置详解与性能优化最佳实践
  • 栈 —— 数据结构基础刷题路程
  • Linux: 进程信号初识
  • 批量提取 PDF 文档中指定页为新的 PDF 文档
  • 【结肠AI分割论文合集1(2021~2023年份)】A survey1
  • 深入探索Redisson:用法全解析及在微服务中的关键应用
  • UCOS和RTOS的区别
  • 算法:双指针法--计算两数之和
  • 数据驱动的智能BMS革新:机器学习赋能电池健康预测与安全协同优化