结果震荡问题(Bouncing Results)资料

本文主要介绍结果震荡问题(Bouncing Results)资料 方法和在新技术下所面对的“挑战”,方便大家深入理解结果震荡问题(Bouncing Results)资料 过程。本文也将分享结果震荡问题(Bouncing Results)资料 所遇到的问题和应对策略。
通过深入本文可以理解代码原理,进行代码文档的下载,也可以查看相应 Demo 部署效果。

搜索同一query,结果ES返回的顺序却不尽相同,这就是请求轮询到不同分片,而未设置排序条件,相同相关性评分情况下,是按照所在segment中lucene ID来排序的,相同数据的不同副本之间该ID是不能保证一致的,由于搜索请求是在所有有效的分片副本间轮询的,这两个document可能在原始分片里查询出来是一种顺序,在副本分片里查询出来是另一种顺序。故造成结果震荡问题。

可以使用preference参数(_primary_first、_replica_first等)来指定分片查询的优先级,即我们可以通过该参数来控制搜索时的索引数据分片。

如不设置该参数:在所有有效的主分片以及副本间轮询。

1. 段合并以及删除已经删除的文档的结果在节点之间并不协同,意味着主分片和副本分片中被删的文档数目可能不同。意思是说当索引有update/delete一类操作的时候,旧文档不是马上被删除的,实际的删除操作发生在一些segment合并的阶段。 而主副分片的segment合并完全是各不想干独立进行的,所以还未删除的旧文档是不一致的。 而出于一些实际因素的考虑,还未物理删除的文档,也是shard统计信息的一部分,这样就会导致主副分片可能存在打分score的差异。

2. 就是搜索的结果里,可能有写文档的score是一样的,对于score一样的匹配文档,ES是按照lucene ID(lucene ID是lucene层面的一个根据文档写入顺序递增的一个顺序id,是lucene内部用来寻址文档位置的一个id)顺序返回。 同一个文档写入主副分片的doc ID并不是完全一致的,当要求返回TOP N的文档时,就可能存在主副分片给的结果不一致。

3. 因为主副分片的refresh过程是相互独立的,在有持续写入的情况下,主副分片包含的数据不是严格一致的。 所以同个搜索多次执行的时候,在主副分片来回执行会导致结果“跳动”的情况。

见https://www.elastic.co/guide/en/elasticsearch/reference/current/consistent-scoring.html

注意:本文归作者所有,未经作者允许,不得转载
结果震荡问题(Bouncing Results)资料部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 结果震荡问题(Bouncing Results)资料

提供最优质的资源集合

立即查看 了解详情