Ruby
Ruby/Rails
A sample Rails application can be found on GitHub https://github.com/searchly/searchly-rails-sample.
Configuration
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>
Index Creation
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>
Search
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.