Module: Elasticsearch::API::Actions

Defined in:
lib/es_utils/ext/elasticsearch/scroll.rb,
lib/es_utils/ext/elasticsearch/bulk_index.rb

Instance Method Summary collapse

Instance Method Details

#scroll_each(arguments = {}, &blk) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/es_utils/ext/elasticsearch/scroll.rb', line 4

def scroll_each(arguments={}, &blk)
  valid_params = [
    :index, :scroll, :size, :body
  ]

  params = Utils.__validate_and_extract_params arguments, valid_params

  params[:body]   ||= {}
  params[:scroll] ||= "5m"
  params[:size]   ||= 100

  s = search({
    index:       params[:index],
    scroll:      params[:scroll],
    size:        params[:size],
    body:        {sort: '_id'}.merge(params[:body]),
    search_type: "scan",
  })

  loop do
    s = scroll(:scroll_id => s["_scroll_id"], :scroll => params[:scroll])
    results = s["hits"]["hits"]

    break  if results.empty?

    blk.call(results)
  end
end