es中的scan and scroll搜索

原创 2015年11月18日 14:40:44

在es上搜索数据时,默认es只会返回10条文档,当我们想获取更多结果,或者只要结果中的一个区间的数据时,可以通过szie和from来指定。

GET /_search?size=3&from=20
如上的查询语句,会返回排序后的结果中第20到第22条数据。es在收到这样的一个请求之后,每一个分片都会返回一个top22的搜索结果,然后将这些结果汇总排序,再选出top22,最后取第20到第22条数据作为结果返回。


这样会带来一个问题,当我们搜索的时候,如果想取出第10001条数据,那么就相当于每个一分片都要对数据进行排序,取出前10001条文档,然后es再将这些结果汇总再次排序,之后取出第10001条数据。这样对于es来说就会产生相当大的资源和性能开销。如果我们不要求es对结果进行排序,那么就会消耗很少的资源,所以针对此种情况,es提供了scan and scroll的搜索方式。

GET /old_index/_search?search_type=scan&scroll=1m 
{
    "query": { "match_all": {}},
    "size":  1000
}
我们可以首先通过如上的请求发起一个搜索,但是这个请求不会返回任何文档,它会返回一个_scroll_id,接下来我们再通过这个id来从es中读取数据:

GET /_search/scroll?scroll=1m 
c2Nhbjs1OzExODpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExOTpRNV9aY1VyUVM4U0 
NMd2pjWlJ3YWlBOzExNjpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExNzpRNV9aY1Vy
UVM4U0NMd2pjWlJ3YWlBOzEyMDpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzE7dG90YW
xfaGl0czoxOw==
此时除了会返回搜索结果以外,还会再次返回一个_scroll_id,当我们下次继续取数据时,需要用最新的id。


Elasticsearch--scan and scroll

scan(扫描)搜索类型是和scroll(滚屏)一起使用来从Elasticsearch里高效地连续性取回巨大数量的结果而不需要付出深分页的代价。...
  • u014431852
  • u014431852
  • 2016年10月16日 16:45
  • 1736

elasticsearch 分页 (from+size)(scroll scan) (search after) 详解-->解决深分页 (持续更新)

学习交流QQ群:481223144官方参考Guide https://www.elastic.co/guide/en/elasticsearch/guide/2.x/scroll.html Ref...
  • slml08
  • slml08
  • 2017年01月05日 18:12
  • 16164

ElasticSearch scan和scroll功能 python 实现

前言search 我们经常使用,默认一次返回10条数据,并且可以通过 from 和 size 参数修改返回条数并执行分页操作。但是有时需要返回大量数据,就必须通过scan和scroll实现。两者一起使...
  • xsdxs
  • xsdxs
  • 2017年06月06日 11:57
  • 3153

Elasticsearch Scroll (游标)API详解

分类:全文索引 (423) (0) 举报 收藏 http://www.16php.com/archives/380 今天我们来探讨一下Elasticsearch Scr...
  • u012450329
  • u012450329
  • 2016年09月28日 18:04
  • 3597

elasticsearch如何获得查询的全部结果

通常,在ES中使用查询时,默认返回的前10条结果,当我们一个查询有上万的结果时,我们如何获取全部数据??虽然我们可以通过size设置查询后返回的条数。   ES的API中提供了scan和scrol...
  • woshicheng1990
  • woshicheng1990
  • 2015年10月27日 18:16
  • 15453

Elasticsearch使用scroll进行分页查询

之前一直使用from size进行分页查询(深度分页),当数据量大的时候,对全部数据进行遍历,使用from size性能会很差,然后了解了下scroll方法,简单讲解一下scroll方法的使用。 从网...
  • lom9357bye
  • lom9357bye
  • 2017年03月21日 20:50
  • 6154

elasticsearch以scroll方式 大数据重建索引

scroll查询方式主要用于进行大数据的遍历
  • sd4015700
  • sd4015700
  • 2014年06月23日 09:29
  • 2932

elasticsearch-利用游标查询 'Scroll'来做分页查询

游标查询 'Scroll' scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询允许我们 先做查询初始化,然...
  • chuan442616909
  • chuan442616909
  • 2017年02月15日 14:12
  • 4760

es scroll 代替 form size 实现 分页 java 版本

也是查看很多资料,又被版本给坑了。切记 版本版本  下面 基于 2.3.3 实现  package com.es.scroll; import java.net.InetAddress; im...
  • u014017121
  • u014017121
  • 2017年04月01日 15:08
  • 1019

es的scroll api使用

MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("app",app); SearchQuery query = ...
  • torrytang
  • torrytang
  • 2017年06月20日 20:05
  • 500
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:es中的scan and scroll搜索
举报原因:
原因补充:

(最多只允许输入30个字)