前端查询,经常有分页展示的需求,关系型数据库中往往都提供了类似于top limit这样的语义来支持分页查询。elasticsearch中也提供了from szie这两个参数来支持分页查询,但是当一个索引中文档数非常巨大的时候,通过from、size来实现分页查询对性能影响很大。所以,ES提供了滚动查询API来提高查询性能,下面介绍下Scroll API的基本用法。
首先新建一个索引,插入一些测试数据
PUT test_scroll
{
"settings": {
"number_of_shards": 1
, "number_of_replicas": 0
},
"mappings": {
"properties": {
"id":{
"type": "keyword"
},
"content":{
"type": "text"
}
}
}
}
然后,我们新建一个查询,ES称之为初始化查询。假设我们需要一次返回10条数据,可以新建如下查询:
POST test_scroll/_search?scroll=1m
{
"size": 10,
"query": {
"match_all": {}
}
}
执行成功后,返回的结果里有一个_scroll_id字段