module ElasticQueue::Percolation::ClassMethods

Public Instance Methods

dynamically_percolate(model, percolator_body) click to toggle source
# 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_queries() click to toggle source
# 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) click to toggle source
# 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
unregister_percolator_query(name) click to toggle source
# File lib/elastic_queue/percolation.rb, line 18
def unregister_percolator_query(name)
  search_client.delete index: '_percolator', type: index_name, id: name
end