
Scrolling允许我们初始化搜索将结果从Elasticsearch中按批次分离出来直到没有更多结果。这个有点像传统数据库中的游标。
GET /old_index/_search?scroll=1m
}
1、因为保持scroll打开消耗资源,所以我们需要设置超时时间。这里保持1分钟的连接
2、_doc是最有效的排序顺序。
3、在扫描scan的时候,size是应用到每一个片shard上的,所以每一个批次中文档数量应该是size * number_of_primary_shards
该请求返回一个Base-64编码的_scroll_id。现在我们可以通过_scroll_id用_search/scroll接口获取下个批次的数据。
Bulk API使执行多次索引或者删除 *** 作在一个API中完成。这可以极大的提高索引速度。
1、ES批量查询
2、ES批量修改
3、ES批量删除
4、ES批量增加
一、分页查询
1.普通分页查询
2.深度分页
其实就是搜索的深浅度,比如第一页、第二页、第二十页等等,是浅分页。第一万页,第两万页等就是很深了
我们在获取第9999条到10009条数据的时候,其实每个分片都会拿到10009条数据,然后集合在一起,总共是30027条数据,针对这些数据再做排序处理,最后获得十条数据。
如此一来,搜索的太深,就会造成性能问题,会耗费内存和占用cpu。而且es为了性能,也不支持超过一万条数据以上的分页查询。解决深度分页问题,就是应该避免深度分页的 *** 作(限制分页页数)。比如最多提供100页的展示等。
3.scroll滚动搜索
滚动搜索可以先查询出一些数据,然后再紧接着以此往下查询。在第一次查询的时候会有一个滚动id,相当于一个锚标记,随后再次滚动搜索需要上次的标记。每次搜索都是基于一个历史的数据快照,在查询期间,如果有数据变更,所有的内容不会变化
4.批量查询mget
未命中的结果也会返回json显示是否有值。
POST /_doc/_mget
{
"ids":[
"1008",
"1007",
"555"
]
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)