美文网首页ElastichSearchelasticsearchElasticSearch
五十六、Elasticsearch初识搜索引擎-bouncing

五十六、Elasticsearch初识搜索引擎-bouncing

作者: 编程界的小学生 | 来源:发表于2017-07-11 11:55 被阅读190次

    preference
    该参数能够让你控制哪些分片或者节点会用来处理搜索请求。它能够接受:
    _primary
    ,_primary_first
    ,_local
    ,_only_node:xyz
    ,_prefer_node:xyz
    以及_shards:2,3
    这样的值。这些值的含义在搜索preference的文档中有详细解释。
    但是,最常用的值是某些任意的字符串,用来避免结果跳跃问题(Bouncing Result Problem)。

    结果跳跃(Bouncing Results)
    比如当你使用一个timestamp
    字段对结果进行排序,有两份文档拥有相同的timestamp。因为搜索请求是以一种循环(Round-robin)的方式被可用的分片拷贝进行处理的,因此这两份文档的返回顺序可能因为处理的分片不一样而不同,比如主分片处理的顺序和副本分片处理的顺序就可能不一样。
    这就是结果跳跃问题:每次用户刷新页面都会发现结果的顺序不一样。
    这个问题可以通过总是为相同用户指定同样的分片来避免:将preference
    参数设置为一个任意的字符串,比如用户的会话ID(Session ID)。让每个user每次搜索的时候,都使用同一个replica shard去执行,就不会看到bouncing results了

    若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
    欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


    qrcode_for_gh_577b64e73701_258.jpg

    相关文章

      网友评论

        本文标题:五十六、Elasticsearch初识搜索引擎-bouncing

        本文链接:https://www.haomeiwen.com/subject/jrophxtx.html