To search according to passed parameters
# File app/models/concerns/subtrade_search.rb, line 84 def self.search(params) @search_definition = {query: {filtered: {}}, sort: [{name: {order: :asc}}]} unless params[:trade_id].blank? @search_definition[:query][:filtered][:filter] = {bool: {must: {and: [{term: {trade_id: params[:trade_id]}}]}}} end if !params[:without_fixxpert_existence] @search_definition[:query][:filtered][:filter] ||= {} @search_definition[:query][:filtered][:filter][:exists] = { field: 'fixxperts' } end unless params[:query].blank? if !params[:without_fixxpert_existence] @search_definition[:query][:filtered][:query] = { multi_match: { query: params[:query], fields: [ "name", "alternate_name", "trade.name", "teachers", "mini_description" ], type: "phrase_prefix" } } else @search_definition[:query][:filtered][:query] = { multi_match: { query: params[:query], fields: [ "name", "alternate_name", "trade.name", "fixxperts.name", "teachers", "mini_description" ], type: "phrase_prefix" } } end end __elasticsearch__.search(@search_definition) end
This will return all the relevant rows from the database in json format
# File app/models/concerns/subtrade_search.rb, line 34 def as_indexed_json(options=[]) { id: id, name: name, description: description, alternate_name: alternate_name, trade_id: trade_id, teachers: teachers, mini_description: mini_description, trade: { _type: 'trade', _id: trade.id, name: trade.name, description: trade.description }, # school: { # _type: 'school', # _id: school.id, # name: school.name # }, fixxperts: fixxperts.map{ |t| { _type: 'fixxpert', _id: t.id, name: t.name } } } end
Calls Superclass Method
# File app/models/concerns/subtrade_search.rb, line 65 def as_json(options={}) json = super(options) json[:_type] = "subtrade" json end