zoukankan      html  css  js  c++  java
  • ElasticSearch解决深度分页性能存在的问题使用scoll来解决

     现在我们全局搜索全部的数据,每次返回3条,

    从 scroll 请求返回的结果反映了 search 发生时刻的索引状态,就像一个快照。后续的对文档的改动(索引、更新或者删除)都只会影响后面的搜索请求。

    为了使用 scroll,初始搜索请求应该在查询中指定 scroll 参数,这可以告诉 Elasticsearch 需要保持搜索的上下文环境多久(参考Keeping the search context alive),如 ?scroll=1m。这里1m表示使用1分钟

    使用上面的请求返回的结果中包含一个 scroll_id,这个 ID 可以被传递给 scroll API 来检索下一个批次的结果。

    scroll 深分页
    from+size查询在10000-50000条数据(1000到5000页)以内的时候还是可以的,但是如果数据过多的话,就会出现深分页问题。

    为了解决上面的问题,elasticsearch提出了一个scroll滚动的方式。
    scroll 类似于sql中的cursor,使用scroll,每次只能获取一页的内容,然后会返回一个scroll_id。根据返回的这个scroll_id可以不断地获取下一页的内容,所以scroll并不适用于有跳页的情景。

    GET test_dev/_search?scroll=5m
    {
      "query": {
        "bool": {
          "filter": [
            {
              "term": {
                "age": 28
              }
            }
          ]
        }
      },
      "size": 10,
      "from": 0,
      "sort": [
        {
          "timestamp": {
            "order": "desc"
          },
          "_id": {
            "order": "desc"
          }
        }
      ]
    }
    1. scroll=5m表示设置scroll_id保留5分钟可用。
    2. 使用scroll必须要将from设置为0。
    3. size决定后面每次调用_search搜索返回的数量

    然后我们可以通过数据返回的_scroll_id读取下一页内容,每次请求将会读取下10条数据,直到数据读取完毕或者scroll_id保留时间截止:

    GET _search/scroll
    {
      "scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAJZ9Fnk1d......",
      "scroll": "5m"
    }

    注意:请求的接口不再使用索引名了,而是 _search/scroll,其中GET和POST方法都可以使用。

    scroll删除
    根据官方文档的说法,scroll的搜索上下文会在scroll的保留时间截止后自动清除,但是我们知道scroll是非常消耗资源的,所以一个建议就是当不需要了scroll数据的时候,尽可能快的把scroll_id显式删除掉。

    清除指定的scroll_id:

    清除指定的scroll_id:

    DELETE _search/scroll/DnF1ZXJ5VGhlbkZldGNo.....
     

    清除所有的scroll:

    DELETE _search/scroll/_all
  • 相关阅读:
    容斥原理算法总结(bzoj 2986 2839)
    网络流系列算法总结(bzoj 3438 1061)
    bzoj 2746: [HEOI2012]旅行问题 AC自动机fail树
    bzoj 3283: 运算器 扩展Baby Step Giant Step && 快速阶乘
    计算几何考场绘图技巧
    bzoj 1845: [Cqoi2005] 三角形面积并 扫描线
    bzoj 3784: 树上的路径 堆维护第k大
    BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛
    BZOJ 1112: [POI2008]砖块Klo
    BZOJ 1003: [ZJOI2006]物流运输trans DP+最短路
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/13022217.html
Copyright © 2011-2022 走看看