ElasticSearch, Tire - refactor autocomplete method for multiple resources
I'll take autocomplete and leave the rest for others. Some notes:


Never write the pattern "empty array" + each + push + return array. That's a map (more on functional programming here)
Is this "lib" thing really in lib/? it should go to app/. In lib you only have generic code that may be reused across applications. 
Don't write routes by hand, ever, that's terrible practice, use the helper router methods provided by Rails.
Don't write tags by hand, use content_tag.
Abstract and simplify by identifying repeated patterns in your code.


I'd write:

def autocomplete
  results.map do |result|
    title, caption, route = case result.type.to_sym
    when :past_event
      [result.content, "PastEvent", past_event_path(result)]
    ...
    end

    label = "%s %s" % [title, content_tag(:span, caption, class: 'search-type')]
    {title: title, label: label, value: route}
  end
end