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

问题描述:

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

问题猜测:

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

2、es数据重复(排除)

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

解决方案:

1、Time base(基于时间)

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

2、Point in time

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

3、Scroll

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

方案对比:

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

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

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

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

相关推荐
得物技术38 分钟前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
武子康2 小时前
大数据-238 离线数仓 - 广告业务 Hive分析实战:ADS 点击率、购买率与 Top100 排名避坑
大数据·后端·apache hive
武子康1 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天1 天前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
Elasticsearch2 天前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch3 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库5 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全