Search After

--- Search From ---

POST users/_search
{
  "from": 0,
  "size": 10000,
  "query": {
    "match_all": {}
  }
}

--- Search After ---

避免深度分页的性能问题,可以实时获取下一页文档信息

  • 不支持指定页数据(From)
  • 只能往下翻

第一步搜索需要指定sort,并且保证值是唯一的(可以通过加入_id 保证唯一性)

然后使用上一次,最后一个文档sort值进行查询

DELETE users
POST users/_doc
{"name":"user1","age":10}
POST users/_doc
{"name":"user2","age":11}
POST users/_doc
{"name":"user3","age":12}
POST users/_doc
{"name":"user4","age":13}

POST users/_count

POST users/_search
{
  "size": 1,
  "query": {
    "match_all": {}
  },
  "sort": [
    {"age": {"order": "desc"}},
    {"_id": {"order": "asc"}}
  ]
}

POST users/_search
{
  "size": 2,
  "query": {
    "match_all": {}
  },
  "search_after":
    [
          13,
          "2Mn8H20Bh4meypKEoD8Y"
        ]

        ,

  "sort": [
    {"age": {"order": "desc"}},
    {"_id": {"order": "asc"}}
  ]
}

--- Scroll ---

创建一个快照,有新的数据写入以后,无法被查到

每次查询后,输入上一次的Scroll Id

POST /users/_search?scroll=5m
{
 "size": 1 ,
 "query": {
   "match_all": {}
 }
}

POST _search/scroll
{
  "scroll":"1m",
  "scroll_id":"DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAjEWeVpzQXR6ZF9TazJyWUNoVDR6bFVXdw=="
}

POST users/_search
{
  "from": 0,
  "size": 10000,
  "query": {
    "match_all": {}
  }
}

 

--- 总结一下 ---

  • Regual 需要实时获取顶部的部分文档。例如查询最新的订单都
  • Scroll 需要全部文档,例如导出全部数据
  • Pagination From和Size; 如果需要深度分页,则选用Search After

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值