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
|