scroll search
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-request-scroll.html
@param scroll
@param scrollId

@return
@throws ElasticSearchException
972600
public String searchScroll(String scroll,String scrollId ) throws ElasticSearchException{
		if(!this.client.isV1()) {
			StringBuilder entity = new StringBuilder();
			entity.append("{\"scroll\" : \"").append(scroll).append("\",\"scroll_id\" : \"").append(scrollId).append("\"}");
			String result = this.client.executeHttp("_search/scroll",entity.toString(),ClientUtil.HTTP_GET);
			return result;
		}
		else {
			StringBuilder path = new StringBuilder();
			path.append("_search/scroll?scroll=").append( scroll ).append( "&scroll_id=" ).append( scrollId);
			String result = this.client.executeHttp(path.toString(), ClientUtil.HTTP_GET);
			return result;
		}
//		StringBuilder entity = new StringBuilder();
//		entity.append("{\"scroll\" : \"").append(scroll).append("\",\"scroll_id\" : \"").append(scrollId).append("\"}");
//		String result = this.client.executeHttp("_search/scroll",entity.toString(),ClientUtil.HTTP_GET);
//		return result;
	}
356708
public String deleteScrolls(Set<String> scrollIds) throws ElasticSearchException{
		if(scrollIds == null || scrollIds.size() == 0 )
			return null;
		return deleteScrolls(scrollIds.iterator());
	}
641185
public void scrollToSide(int side, float scrollPosition) {
		if(config.commandLogging){
			Log.d(config.commandLoggingTag, "scrollToSide("+scrollPosition+")");
		}
		
		scrollToSide(side, scrollPosition, 20);
	}
97741
public  <T> ESDatas<T> searchAll(String index,  int fetchSize ,Class<T> type) throws ElasticSearchException{
		return searchAll(index,  fetchSize ,(ScrollHandler<T>) null,type);
	}
1053229
public function scrollSpecifications($scrollId, array $options = [])
    {
        if (!$scrollId) {
            throw new \Exception('Collection.scrollSpecifications: scrollId is required');
        }

        $options['httpParams'] = [':scrollId' => $scrollId];

        $data = [];

        $response = $this->kuzzle->query(
            $this->kuzzle->buildQueryArgs('collection', 'scrollSpecifications'),
            $data,
            $options
        );

        return $response['result'];
    }
284101
public void scrollViewToSide(View view, int side, float scrollPosition) {
		if(config.commandLogging){
			Log.d(config.commandLoggingTag, "scrollViewToSide("+view+", "+side+", "+scrollPosition+")");
		}
		
		scrollViewToSide(view, side, scrollPosition, 20);
	}
943380
public static byte[] setHorizontalScroll(ScrollDirection direction, byte startAddress, byte endAddress, byte speed) {
        if (startAddress < 0 || startAddress > 7 || endAddress < 0 || endAddress > 7) {
            throw new IllegalArgumentException("Start and end address must be between 0 and 7.");
        }
        if (endAddress < startAddress) {
            throw new IllegalArgumentException("End address must be larger or equal to start address.");
        }
        if (speed < 0 || speed > 7) {
            throw new IllegalArgumentException("Speed must be between 0 and 7.");
        }
        return new byte[]{
            COMMAND_CONTROL_BYTE, (byte) (SET_HORIZONTAL_SCROLL | direction.ordinal()),
            COMMAND_CONTROL_BYTE, 0, // dummy byte
            COMMAND_CONTROL_BYTE, startAddress,
            COMMAND_CONTROL_BYTE, speed,
            COMMAND_CONTROL_BYTE, endAddress,
            COMMAND_CONTROL_BYTE, 0, //dummy byte
            COMMAND_CONTROL_BYTE, (byte) 0xFF //dummy byte
        };
    }
1354315
private void onScrollImpl(final Vector3Axis offset, final LayoutScroller.OnScrollListener listener) {
        if (!isScrolling()) {
            mScroller = new ScrollingProcessor(offset, listener);
            mScroller.scroll();
        }
    }
148355
function scrollToAnchorId(hash) {
    var target = document.getElementById(hash = (hash || '').replace(/^#/, ''));
    if (target && target.id === hash && target.nodeName === "A") {
      var rect = target.getBoundingClientRect();
      global.scrollTo((documentElement.scrollLeft || 0), rect.top + (documentElement.scrollTop || 0)
        - (documentElement.clientTop || 0));
    }
  }
73746
function onScroll(e) {
      // 节流
      if (!this.scrollThrottle(Date.now())) return false;
      this.moveY = e.target.scrollTop;
      this.moveX = e.target.scrollLeft;
      this.updateSyncScroll();
    }
134445
public void scrollTo() {
        String action = "Scrolling screen to " + prettyOutput();
        String expected = prettyOutputStart() + " is now within the current viewport";
        try {
            // wait for element to be present
            if (isNotPresent(action, expected, CANT_SCROLL)) {
                return;
            }
            // perform the move action
            WebElement webElement = getWebElement();
            Actions builder = new Actions(driver);
            builder.moveToElement(webElement);
        } catch (Exception e) {
            cantScroll(e, action, expected);
            return;
        }
        isScrolledTo(action, expected);
    }
1291774
public function scroll($scrollId, array $options = [], array $filters = [])
    {
        $options['httpParams'] = [':scrollId' => $scrollId];

        $data = [];

        if (!$scrollId) {
            throw new \Exception('Collection.scroll: scrollId is required');
        }

        $response = $this->kuzzle->query(
            $this->kuzzle->buildQueryArgs('document', 'scroll'),
            $data,
            $options
        );

        $response['result']['hits'] = array_map(function ($document) {
            return new Document($this, $document['_id'], $document['_source'], $document['_meta']);
        }, $response['result']['hits']);


        if (array_key_exists('_scroll_id', $response['result'])) {
            $options['scrollId'] = $response['result']['_scroll_id'];
        }

        return new SearchResult(
            $this,
            $response['result']['total'],
            $response['result']['hits'],
            array_key_exists('aggregations', $response['result']) ? $response['result']['aggregations'] : [],
            $options,
            $filters,
            array_key_exists('previous', $options) ? $options['previous'] : null
        );
    }
168909
@Override
    public void scrollLines(int firstLine, int lastLine, int distance) {
        getBackBuffer().scrollLines(firstLine, lastLine, distance);
    }
803299
function(scrollObj, opts) {
    var xScroll = scrollObj[0];
    var yScroll = scrollObj[1];

    this.set("_alignmentScrollLeft", xScroll, opts);
    return this.set("_alignmentScrollTop", yScroll, opts);
  }
581392
public void scrollDown() {
        logger.entering();
        WebElement webElement = this.findElement(By.className(SCROLLVIEW_CLASS));
        swipeDown(webElement);
        logger.exiting();
    }
587071
def scroll(self, query=None, scroll='5m', size=100, unpack=True):
        
        query = self.match_all if query is None else query
        response = self.instance.search(index=self.index, doc_type=self.doc_type, body=query, size=size, scroll=scroll)
        while len(response['hits']['hits']) > 0:
            scroll_id = response['_scroll_id']
            logging.debug(response)
            if unpack:
                yield [source['_source'] if '_source' in source else source for source in response['hits']['hits']]
            else:
                yield response['hits']['hits']
            response = self.instance.scroll(scroll_id=scroll_id, scroll=scroll)
1291597
ScrollQuery scanLimit(String query, BytesArray body, long limit, ScrollReader reader) {
        return new ScrollQuery(this, query, body, limit, reader);
    }