Module: ElasticQueue::Percolation::ClassMethods

Defined in:
lib/elastic_queue/percolation.rb

Instance Method Summary collapse

Instance Method Details

#dynamically_percolate(model, percolator_body) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/elastic_queue/percolation.rb', line 26

def dynamically_percolate(model, percolator_body)
  search_id = SecureRandom.uuid
  # create a dynamic percolator with the query params, index our model in it and see if there are any matches
  search_client.index index: '_percolator', type: 'dynamic_percolator', id: search_id, body: percolator_body, refresh: true
  search = search_client.percolate index: 'dynamic_percolator', body: { doc: model.indexed_for_queue, query: { term: { _id: search_id } } }
  search_client.delete index: '_percolator', type: 'dynamic_percolator', id: search_id
  search
end

#percolator_queriesObject



6
7
8
9
10
11
# File 'lib/elastic_queue/percolation.rb', line 6

def percolator_queries
  queries = {}
  search = search_client.search index: '_percolator', body: { query: { match_all: {} } }, size: 1000
  search['hits']['hits'].each { |hit| queries[hit['_id']] = hit['_source'] }
  queries
end

#register_percolator_query(name, body) ⇒ Object



22
23
24
# File 'lib/elastic_queue/percolation.rb', line 22

def register_percolator_query(name, body)
  search_client.index index: '_percolator', type: index_name, id: name, body: body
end

#reverse_search(model) ⇒ Object



13
14
15
16
# File 'lib/elastic_queue/percolation.rb', line 13

def reverse_search(model)
  percolation = search_client.percolate index: index_name, body: { doc: model.indexed_for_queue }
  percolation['matches']
end

#unregister_percolator_query(name) ⇒ Object



18
19
20
# File 'lib/elastic_queue/percolation.rb', line 18

def unregister_percolator_query(name)
  search_client.delete index: '_percolator', type: index_name, id: name
end