scroll method

Future<SearchResult> scroll({
  1. required String scrollId,
  2. required Duration duration,
})

Continue search using the scroll API.

Implementation

Future<SearchResult> scroll({
  required String scrollId,
  required Duration duration,
}) async {
  final path = ['_search', 'scroll'];
  final bodyMap = {
    'scroll_id': scrollId,
    'scroll': duration.inSeconds.toString() + 's',
  };
  final rs = await _transport.send(Request('GET', path, bodyMap: bodyMap));
  rs.throwIfStatusNotOK(message: 'Failed to search scroll.');
  final body = rs.bodyAsMap;
  final hitsMap = body['hits'] as Map<String, dynamic>? ?? const {};
  final totalCount = _extractTotalCount(hitsMap);
  final results = _extractDocList(hitsMap);

  return SearchResult(
    totalCount,
    results,
    scrollId: body['_scroll_id'] as String,
  );
}