一、为什么要使用ES的scroll (1)首先我们要明白es的查询机制:ES的搜索是分2个阶段进行的,即Query阶段和Fetch阶段。 Query阶段比较轻量级,通过查询倒排索引,获取满足查询结果的文档ID列表。 Fetch阶段比较重,需要将每个分片的查询结果取回,在协调结点进行全局排序。 通过From+size这种方式分批获取数据的时候,随着from加大,需要全局排序并丢弃的结果数量随之上升,性能越来越差。 (2)es在进行普通的查询时,默认只给查询出来十条数据。 通过设置size的值可以使查询结果从10增大到1000条数据,当超出1000条数据的时候就会只显示出来1000条数据。 为了解决上面的问题可以采用一种效率比较低的方法,在创建索引的时候添加如下配置 "settings":{ "index":{ "max_result_window": 在这里填入你需要的大小 } } (3)如果进行高效的查询呢?那就需要使scroll滚动查询了。 Scroll查询,先做轻量级的Query阶段以后,免去了繁重的全局排序过程。...