Ruby on Rails
Elasticsearch
Sök…
Installation och testning
Det första du vill göra för lokal utveckling är att installera ElasticSearch i din maskin och testa den för att se om den körs. Det kräver att Java är installerad. Installationen är ganska enkel:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Starta sedan:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
För att testa det är det enklaste sättet med curl
. Det kan ta några sekunder innan det börjar, så få inte panik om du inte får något svar först.
curl localhost:9200
Exempel svar:
{
"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"
}
Ställa in verktyg för utveckling
När du kommer igång med ElasticSearch (ES) kan det vara bra att ha ett grafiskt verktyg som hjälper dig att utforska dina data. En plugin som heter elasticsearch-head
gör just det. Så här installerar du det:
- Ta reda på i vilken mapp ES är installerad:
ls -l $(which elasticsearch)
-
cd
in i den här mappen och kör plugininstallationen binär:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Öppna
http://localhost:9200/_plugin/head/
i din webbläsare
Om allt fungerade som förväntat bör du se ett trevligt GUI där du kan utforska dina data.
Introduktion
ElasticSearch har ett väl dokumenterat JSON API, men du kommer förmodligen att vilja använda några bibliotek som hanterar det åt dig:
Elasticsearch
- det officiella lågnivåomslaget för HTTP APIElasticsearch-rails
- den officiella Rails-integrationen på hög nivå som hjälper dig att ansluta dina Rails-modeller med ElasticSearch med antingen ActiveRecord- eller Repository-mönsterChewy
- En alternativ, icke-officiell integrering på hög nivå Rails som är mycket populär och utan tvekan har bättre dokumentation
Låt oss använda det första alternativet för att testa anslutningen:
gem install elasticsearch
Sedan skjut upp rubinterminalen och prova:
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
Om du vill konfigurera snabbt elasticsearch kan du använda searchkick-pärla:
gem 'searchkick'
Lägg till sökkick till modeller du vill söka.
class Product < ActiveRecord::Base searchkick end
Lägg till data i sökindexet.
Product.reindex
Och för att fråga, använd:
products = Product.search "apples" products.each do |product| puts product.name end
Ganska snabb, elastikundersökningskunskap krävs inte ;-)
Mer information här: https://github.com/ankane/searchkick