Ruby on Rails
elasticsearch
Ricerca…
Installazione e test
La prima cosa che vuoi fare per lo sviluppo locale è installare ElasticSearch nel tuo computer e testarlo per vedere se è in esecuzione. Richiede l'installazione di Java. L'installazione è piuttosto semplice:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Quindi avvialo:
- Mac OS X: i
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Per provarlo, il modo più semplice è con curl
. Potrebbero essere necessari alcuni secondi per l'avvio, quindi non farti prendere dal panico se non ricevi alcuna risposta all'inizio.
curl localhost:9200
Risposta di esempio:
{
"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"
}
Impostazione di strumenti per lo sviluppo
Quando si inizia con ElasticSearch (ES), potrebbe essere utile disporre di uno strumento grafico che consente di esplorare i dati. Un plugin chiamato elasticsearch-head
fa proprio questo. Per installarlo, fai quanto segue:
- Scopri in quale cartella ES è installato:
ls -l $(which elasticsearch)
-
cd
in questa cartella ed esegui l'installazione plugin binary:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Aprire
http://localhost:9200/_plugin/head/
nel browser
Se tutto ha funzionato come previsto, dovresti vedere una bella GUI in cui esplorare i tuoi dati.
introduzione
ElasticSearch ha un'API JSON ben documentata, ma probabilmente vorrai utilizzare alcune librerie che gestiscono ciò per te:
Elasticsearch
: il wrapper ufficiale di basso livello per l'API HTTPElasticsearch-rails
: l'integrazione ufficiale di rails di alto livello che ti aiuta a connettere i tuoi modelli Rails con ElasticSearch usando il pattern ActiveRecord o RepositoryChewy
-Chewy
Rails alternativa e non ufficiale di alto livello che è molto popolare e probabilmente ha una documentazione migliore
Usiamo la prima opzione per testare la connessione:
gem install elasticsearch
Quindi accendi il terminale rubino e provalo:
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
Se vuoi impostare rapidamente elasticsearch puoi utilizzare la searchkick gem:
gem 'searchkick'
Aggiungi searchkick ai modelli che vuoi cercare.
class Product < ActiveRecord::Base searchkick end
Aggiungi dati all'indice di ricerca.
Product.reindex
E per interrogare, usa:
products = Product.search "apples" products.each do |product| puts product.name end
Abbastanza veloce, la conoscenza elasticsearch non è richiesta ;-)
Maggiori informazioni qui: https://github.com/ankane/searchkick