elasticSearch 分页查询出现重复数据

        match查询默认按照评分排序,出现数据评分一致,客户端调用分页的时候,会出现数据重复错乱很严重。from size 做分页,每次都是重新加载,所以评分一致的数据,顺序有可能会变化。在分页的临界点,容易导致数据重复。

 解决方法:

1. 使用不重复字段进行排序干扰

2. 如果需要计算分数可使用:Track Scores

   Track Scores: 在字段上排序时,不会计算分数。 通过将 track_scores 设置为 true,仍将计算和跟踪分数

3.  使用search_after 查询

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于千万级精确分页查询Elasticsearch提供了一些有效的方法。下面是一些建议: 1. 使用 Scroll API:在传统的分页方式中,每次查询都会重新计算结果,这对于千万级的数据集来说是非常耗的。而使用Scroll API,可以一次性获取所有结果,并使用游标来逐步滚动获取数据。这种方式避免了重复计算,提高了查询效率。 2. 使用 Search After:Search After是一种基于游标的分页方式,可以避免深度分页(深度分页指的是用户请求的页数非常大,超过了Elasticsearch默认设置的10000的最大查询结果数)。使用Search After可以在每次查询中通过传递上一次查询结果的最后一个排序值来获取下一页的结果。 3. 优化查询性能:对于千万级数据集,查询性能的优化非常重要。可以考虑以下几点来提高查询性能: - 使用合适的索引(包括字段类型、分词器和分析器)和映射设置。 - 避免在查询中执行复杂的聚合操作。 - 如果可能,尽量使用过滤器而不是查询来限制结果集。 - 如果需要排序,可以考虑在索引预先排序或使用排序脚本来提高查询性能。 4. 使用分片优化:分布式架构中,数据会分布在多个分片上。可以通过合理设置分片数、副本数和路由策略来优化查询性能。请注意,过多的分片数可能会导致性能下降,因此需要权衡利弊。 请根据具体情况选择适合的方法进行千万级精确分页查询

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值