zoukankan      html  css  js  c++  java
  • 59.bouncing results

       

    一、bouncing results成因及解决方案

    bouncing results问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询路由到不同的replica shard上;每次页面上看到的搜索结果的排序都不一样。这就是bouncing result的问题,这个问题出现最多的地方就是timestamp进行排序

    比如当你使用一个timestamp字段对结果进行排序,因为es中时间格式为%Y-%m-%d,那么同样时间的数据会有很多。es如果不做任何设置,将会按round-robined的方式从primary和replica里取了再排序,这样结果就不能保证每次都一样的。毕竟primary有的relica里不一定有,尤其是在不停往es里存放数据的情况,如果有两份文档拥有相同的timestamp。因为搜索请求是以一种循环(Round-robin)的方式被可用的分片拷贝进行处理的,因此这两份文档的返回顺序可能因为处理的分片不一样而不同,比如主分片处理的顺序和副本分片处理的顺序就可能不一样。这就是结果跳跃问题:每次用户刷新页面都会发现结果的顺序不一样。

    解决方案就是将preference设置为一个字符串,为相同用户指定同样的分片来避免,比如说user_id,让每个user每次搜索的时候,都使用同一个replica shard去执行,就不会看到bouncing results

    search_result = es.search(index=index_name,
    body=search_body, preference="primary")

       

    二、preference可用的参数

       

    _primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3

       

    三、search_typ

    defaultquery_then_fetch(默认)

    dfs_query_then_fetch,可以提升revelance sort精准度(可以手动指定)

       

    四、延伸阅读

    分步式搜索过程

  • 相关阅读:
    jsp获取当前目录下的文件和目录,获取windows盘符
    WAS常用配置的文件
    Was提示SOAP链接不上可能停止 但WAS已经启动
    git本地仓库提交到远程
    ubuntu1804时间相差8小时
    docker安装&卸载
    ubuntu 安装离线字典
    写给还没入门的网页设计师们
    简单10步,建立一个完美的商业网站
    不会配色?来看看网页设计中怎样使用柔和色调
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8473888.html
Copyright © 2011-2022 走看看