ES分页问题

分页方式3种

  1. from + size 浅分页
    其中,from定义了目标数据的偏移值,size定义当前返回的数目。默认from为0,size为10,即所有的查询默认仅仅返回前10条数据。越往后查询效率越低; 5w条以内勉强可用;
    如果搜索size大于10000,需要设置index.max_result_window参数
PUT _settings
{
    "index": {
        "max_result_window": "10000000"
    }
}  
  1. scroll 深分页,
    滚动读取, 相当于创建一个索引快照,然后按照索引依次去查询;
GET test_dev/_search?scroll=5m
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "age": 28
          }
        }
      ]
    }
  },
  "size": 10,
  "from": 0,
  "sort": [
    {
      "timestamp": {
        "order": "desc"
      },
      "_id": {
        "order": "desc"
      }
    }
  ]
}

scroll=5m表示设置scroll_id保留5分钟可用。
使用scroll必须要将from设置为0。
size决定后面每次调用_search搜索返回的数量;
然后我们可以通过数据返回的_scroll_id读取下一页内容,每次请求将会读取下10条数据,直到数据读取完毕或者scroll_id保留时间截止;

缺点:
① 不能跳页读取,只能顺序读取;
②历史快照,不能查询实时数据;
③scroll_id会占用大量的资源,尤其是排序(用完后要记得删除)

2.2 Scroll Scan 的遍历与普通 Scroll 一样,初始化存在一点差别,但没有排序功能;
Scroll-Scan结果没按index顺序返回,没有排序,可以提高取数据性能。
2.3 Sliced Scroll 切片并发, 与Scroll Scan类似只是进行切片,然后并发执行;

  1. Search After (ES5之后才有的)
    search_after 分页的方式是根据上一页的最后一条数据来确定下一页的位置,同时在分页请求的过程中,如果有索引数据的增删改查,这些变更也会实时的反映到游标上。但是需要注意,因为每一页的数据依赖于上一页最后一条数据,所以无法跳页请求。 这就要求每个文档必须有一个全局唯一值

参考: https://juejin.cn/post/7092046739414204430

相关推荐

  1. ES问题

    2024-02-14 05:58:02       32 阅读
  2. 常见问题

    2024-02-14 05:58:02       16 阅读
  3. ES】--Elasticsearch的深度/内存超限等问题

    2024-02-14 05:58:02       40 阅读
  4. MySQL__深度问题

    2024-02-14 05:58:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-14 05:58:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-14 05:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-14 05:58:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-14 05:58:02       20 阅读

热门阅读

  1. EKF与UKF对比,三维状态量滤波

    2024-02-14 05:58:02       28 阅读
  2. 漫画sql数据分析

    2024-02-14 05:58:02       31 阅读
  3. sklearn:机器学习 分类特征编码category_encoders

    2024-02-14 05:58:02       28 阅读
  4. MongoDB聚合:$listSearchIndexes

    2024-02-14 05:58:02       26 阅读
  5. 大模型提示学习、Prompting微调知识

    2024-02-14 05:58:02       30 阅读
  6. 作业2024/2/13

    2024-02-14 05:58:02       25 阅读
  7. gorm day4

    2024-02-14 05:58:02       25 阅读
  8. 如何使用 Python 创建 Twitter 应用程序

    2024-02-14 05:58:02       28 阅读
  9. 算法刷题day11

    2024-02-14 05:58:02       27 阅读