Module: Mongoid::Elasticsearch

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid/elasticsearch.rb,
lib/mongoid/elasticsearch/es.rb,
lib/mongoid/elasticsearch/index.rb,
lib/mongoid/elasticsearch/utils.rb,
lib/mongoid/elasticsearch/railtie.rb,
lib/mongoid/elasticsearch/version.rb,
lib/mongoid/elasticsearch/indexing.rb,
lib/mongoid/elasticsearch/response.rb,
lib/mongoid/elasticsearch/callbacks.rb,
lib/mongoid/elasticsearch/pagination.rb

Defined Under Namespace

Modules: Callbacks, Indexing, Pagination, Utils Classes: Es, Index, Railtie, Response

Constant Summary collapse

VERSION =
"0.10.0"

Class Method Summary collapse

Class Method Details

.create_all_indexes!Object



96
97
98
99
100
101
102
# File 'lib/mongoid/elasticsearch.rb', line 96

def self.create_all_indexes!
  # puts "creating ES indexes"
  Mongoid::Elasticsearch.registered_models.each do |model_name|
    model = model_name.constantize
    model.es.index.create unless model.es_skip_create
  end
end

.search(query, options = {}) ⇒ Object

search multiple models



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/mongoid/elasticsearch.rb', line 105

def self.search(query, options = {})
  if query.is_a?(String)
    query = {q: Utils.clean(query)}
  end
  # use `_all` or empty string to perform the operation on all indices
  # regardless whether they are managed by Mongoid::Elasticsearch or not
  unless query.key?(:index)
    query.merge!(index: Mongoid::Elasticsearch.registered_indexes.join(','), ignore_indices: 'missing', ignore_unavailable: true)
  end

  page = options[:page]
  per_page = options[:per_page]

  query[:size] = ( per_page.to_i ) if per_page
  query[:from] = ( page.to_i <= 1 ? 0 : (per_page.to_i * (page.to_i-1)) ) if page && per_page

  options[:wrapper] ||= :model

  client = ::Elasticsearch::Client.new Mongoid::Elasticsearch.client_options.dup
  Response.new(client, query, true, nil, options)
end