Ruby on Rails
Elasticsearch
Zoeken…
Installatie en testen
Het eerste wat u voor lokale ontwikkeling wilt doen, is ElasticSearch op uw machine installeren en testen om te zien of deze actief is. Het vereist dat Java wordt geïnstalleerd. De installatie is vrij eenvoudig:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Start het dan:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Voor het testen is de gemakkelijkste manier met curl
. Het kan enkele seconden duren voordat het begint, dus raak niet in paniek als u eerst geen reactie krijgt.
curl localhost:9200
Voorbeeld reactie:
{
"name" : "Hydro-Man",
"cluster_name" : "elasticsearch_gkbonetti",
"version" : {
"number" : "2.3.5",
"build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4",
"build_timestamp" : "2016-07-27T10:36:52Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
Ontwikkeling van tools voor ontwikkeling
Wanneer u aan de slag gaat met ElasticSearch (ES), is het misschien goed om een grafische tool te hebben die u helpt bij het verkennen van uw gegevens. Een plug-in genaamd elasticsearch-head
doet precies dat. Om het te installeren, doet u het volgende:
- Ontdek in welke map ES is geïnstalleerd:
ls -l $(which elasticsearch)
-
cd
naar deze map en voer de installatie van de plug-in binary uit:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Open
http://localhost:9200/_plugin/head/
in uw browser
Als alles werkte zoals verwacht, zou je een mooie GUI moeten zien waar je je gegevens kunt verkennen.
Invoering
ElasticSearch heeft een goed gedocumenteerde JSON API, maar u zult waarschijnlijk enkele bibliotheken willen gebruiken die dat voor u regelen:
Elasticsearch
- de officiële low-level wrapper voor de HTTP APIElasticsearch-rails
- de officiële Rails-integratie op hoog niveau waarmee u uw Rails-modellen kunt verbinden met ElasticSearch met behulp van het ActiveRecord- of Repository-patroonChewy
- Een alternatieve, niet-officiële integratie op hoog niveau van Rails die erg populair is en aantoonbaar betere documentatie heeft
Laten we de eerste optie gebruiken om de verbinding te testen:
gem install elasticsearch
Start vervolgens de robijnrode terminal en probeer het uit:
require 'elasticsearch'
client = Elasticsearch::Client.new log: true
# by default it connects to http://localhost:9200
client.transport.reload_connections!
client.cluster.health
client.search q: 'test'
Searchkick
Als je snel elastisch zoeken wilt instellen, kun je de zoekkick gem gebruiken:
gem 'searchkick'
Zoekkick toevoegen aan modellen waarnaar u wilt zoeken.
class Product < ActiveRecord::Base searchkick end
Voeg gegevens toe aan de zoekindex.
Product.reindex
En om te vragen, gebruik:
products = Product.search "apples" products.each do |product| puts product.name end
Behoorlijk snelle, elastische zoekkennis niet vereist ;-)
Meer informatie hier: https://github.com/ankane/searchkick