Ruby

A sample Rails application can be found on GitHub https://github.com/searchly/searchly-rails-sample.

Ruby on Rails applications will need to add the following entry into their Gemfile.

<span></span><span class="n">gem</span> <span class="s1">'elasticsearch-model'</span>
<span class="n">gem</span> <span class="s1">'elasticsearch-rails'</span>
			

Update application dependencies with bundler. sh $ bundle install Configure Rails Elasticsearch in configure/application.rb or configure/environment/production.rb

<span></span><span class="no">elasticsearch</span><span class="o">::</span><span class="no">model</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="no">elasticsearch</span><span class="o">::</span><span class="no">client</span><span class="o">.</span><span class="n">new</span> <span class="ss">host</span><span class="p">:</span> <span class="no">env</span><span class="o">[</span><span class="s1">'searchbox_url'</span><span class="o">]</span>
			

First add required mixin to your model;

<span></span><span class="k">class</span> <span class="nc">document</span> <span class="o"><</span> <span class="no">activerecord</span><span class="o">::</span><span class="no">base</span>
    <span class="kp">include</span> <span class="no">elasticsearch</span><span class="o">::</span><span class="no">model</span>
  <span class="k">end</span>
			

From Rails console, create documents index for model Document.

<span></span><span class="no">document</span><span class="o">.</span><span class="n">__elasticsearch__</span><span class="o">.</span><span class="n">create_index!</span> <span class="ss">force</span><span class="p">:</span> <span class="kp">true</span>
			

Make your model searchable:

<span></span><span class="k">class</span> <span class="nc">document</span> <span class="o"><</span> <span class="no">activerecord</span><span class="o">::</span><span class="no">base</span>
    <span class="kp">include</span> <span class="no">elasticsearch</span><span class="o">::</span><span class="no">model</span>
    <span class="kp">include</span> <span class="no">elasticsearch</span><span class="o">::</span><span class="no">model</span><span class="o">::</span><span class="no">callbacks</span>
  <span class="k">end</span>
			

When you now save a record:

<span></span><span class="no">document</span><span class="o">.</span><span class="n">create</span> <span class="nb">name</span><span class="p">:</span> <span class="s2">"cost"</span><span class="p">,</span>
                  <span class="ss">text</span><span class="p">:</span> <span class="s2">"cost is claimed to be reduced and in a public cloud delivery model capital expenditure is converted."</span>
			

The included callbacks automatically add the document to a documents index, making the record searchable:

<span></span><span class="vi">@documents</span> <span class="o">=</span> <span class="no">document</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s1">'cost'</span><span class="p">)</span><span class="o">.</span><span class="n">records</span>
			

Elasticsearch Ruby/Rails has very detailed documentation at official Elasticsearch page.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.