scroll

edit
client.scroll([params, [callback]])

Scroll a search request (retrieve the next set of results) after specifying the scroll parameter in a search() call.

Check the API Conventions and the elasticsearch docs for more information pertaining to this method.

Collect every title in the index that contains the word "test".

const allTitles = [];
const responseQueue = [];

// start things off by searching, setting a scroll timeout, and pushing
// our first response into the queue to be processed
await client.search({
  index: 'myindex',
  scroll: '30s', // keep the search results "scrollable" for 30 seconds
  source: ['title'], // filter the source to only include the title field
  q: 'title:test'
})

while (responseQueue.length) {
  const response = responseQueue.shift();

  // collect the titles from this response
  response.hits.hits.forEach(function (hit) {
    allTitles.push(hit.fields.title);
  });

  // check to see if we have collected all of the titles
  if (response.hits.total === allTitles.length) {
    console.log('every "test" title', allTitles);
    break
  }

  // get the next response if there are more titles to fetch
  responseQueue.push(
    await client.scroll({
      scrollId: response._scroll_id,
      scroll: '30s'
    })
  );
}

Params

scroll

DurationString — Specify how long a consistent view of the index should be maintained for scrolled search

scrollId

String — The scroll ID

restTotalHitsAsInt

Boolean — This parameter is ignored in this version. It is used in the next major version to control whether the rest response should render the total.hits as an object or a number

body

Object, JSON — An optional request body, as either JSON or a JSON serializable object. See the elasticsearch docs for details about what can be specified here.

back to top