zoukankan      html  css  js  c++  java
  • php-elasticsearch scroll分页详解

    背景

    ps:首先我们在一个索引里面写入一万条以上的数据。作为数据源 

    现在我想看到第一万零一条数据,首先第一想法是,from 10000 size 1 ,这样做会包下面错误。显然是不成立的。此时便会用到scroll分页, 

    补充一点:from size分页,假如你要获取第1000到1010条数据,即from: 1000 size :10,它内部会先取出1-1010条数据,然后丢弃第1-1000条,保留最后十条并展示。 

    正文 :

    (1)es内操作
    第一步: index/type/_search?pretty&scroll=2m
    此时会返回一个scroll值

    第二步: 直接用scroll_id进行查询。


    这样一步步的滚动查询就可以了

    第三步 清除scroll
    虽然我们在设置开启scroll时,设置了一个scroll的存活时间,但是如果能够在使用完顺手关闭,可以提早释放资源,降低ES的负担

    DELETE 127.0.0.1:9200/_search/scroll
    {
        "scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAdsMqFmVkZTBJalJWUmp5UmI3V0FYc2lQbVEAAAAAAHbDKRZlZGUwSWpSVlJqeVJiN1dBWHNpUG1RAAAAAABpX2sWclBEekhiRVpSRktHWXFudnVaQ3dIQQAAAAAAaV9qFnJQRHpIYkVaUkZLR1lxbnZ1WkN3SEEAAAAAAGlfaRZyUER6SGJFWlJGS0dZcW52dVpDd0hB"
    }


     

    (2)php-elasticsearch scroll分页

    public function index()
    {
    $page = $_REQUEST['page'] ?? 1;
    $size = $_REQUEST['size'] ?? 10;
    $searchParams=array(
    "index" => "eds_user_location",
    "type" => "info",
    // "search_type" => "QUERY_THEN_FETCH",
    "scroll" => "1m",
    "size" => $size,
    // "from" => $page*$size
    );
    $searchParams['body'] = array(
    #查询条件
    );
    $docs = $this->client->search($searchParams);
    $scroll_id = $docs['_scroll_id'];
    $i=1;
    if($page == 1 ){
    $this->ajaxReturn(array(
    'code' => 1,
    'data' => $docs['hits']['hits']
    ));
    }
    while ($i < $page) {
    $response = $this->client->scroll(
    array(
    "scroll_id" => $scroll_id,
    "scroll" => "1m"
    )
    );
    
    if (count($response['hits']['hits']) > 0) {
    // Do Work Here
    
    // Get new scroll_id
    $scroll_id = $response['_scroll_id'];
    } else {
    break;
    }
    $i++;
    }
    $this->ajaxReturn(array(
    'code' => 1,
    'data' => $response['hits']['hits']
    ));
    }
  • 相关阅读:
    怎样用Android Studio打多包名APK
    u-boot-2014.04移植FL2440(使用eclipse编辑uboot)
    power of two
    javascript的prototype经典使用场景
    git创建与管理远程分支【转】
    error:Flash Download failed-“Cortex-M3”,“Programming Algorithm”【转】
    内核签名【转】
    Android系统Recovery模式的工作原理【转】
    Android系统Recovery工作原理之使用update.zip升级过程分析(三)【转】
    Recovery模式【转】
  • 原文地址:https://www.cnblogs.com/paopao123/p/10749282.html
Copyright © 2011-2022 走看看