Ruby on Rails
Elasticsearch
Buscar..
Instalación y pruebas
Lo primero que desea hacer para el desarrollo local es instalar ElasticSearch en su máquina y probarlo para ver si se está ejecutando. Requiere que Java esté instalado. La instalación es bastante sencilla:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Entonces empieza:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Para probarlo, la forma más fácil es con curl
. Puede tardar unos segundos en comenzar, así que no se asuste si no recibe ninguna respuesta al principio.
curl localhost:9200
Ejemplo de respuesta:
{
"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"
}
Configuración de herramientas para el desarrollo.
Cuando esté comenzando con ElasticSearch (ES), puede ser bueno tener una herramienta gráfica que lo ayude a explorar sus datos. Un plugin llamado elasticsearch-head
hace justamente eso. Para instalarlo, haga lo siguiente:
- Averigüe en qué carpeta está instalada ES:
ls -l $(which elasticsearch)
-
cd
en esta carpeta y ejecute el binario de instalación del complemento:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Abra
http://localhost:9200/_plugin/head/
en su navegador
Si todo funcionó como se esperaba, debería ver una buena interfaz gráfica de usuario donde puede explorar sus datos.
Introducción
ElasticSearch tiene una API JSON bien documentada, pero probablemente querrá usar algunas bibliotecas que lo manejen por usted:
Elasticsearch
- el envoltorio oficial de bajo nivel para la API HTTPElasticsearch-rails
: la integración oficial de alto nivel de Rails que le ayuda a conectar sus modelos de Rails con ElasticSearch utilizando ActiveRecord o Repository pattern.Chewy
: una integración de Rails de alto nivel alternativa y no oficial que es muy popular y posiblemente tiene mejor documentación
Usemos la primera opción para probar la conexión:
gem install elasticsearch
Luego enciende la terminal de rubíes y pruébalo:
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
Si quieres configurar rápidamente elasticsearch puedes usar la gema de búsqueda:
gem 'searchkick'
Añadir searchkick a los modelos que desea buscar.
class Product < ActiveRecord::Base searchkick end
Añadir datos al índice de búsqueda.
Product.reindex
Y para consultar, usar:
products = Product.search "apples" products.each do |product| puts product.name end
Bastante rápido, no se requiere conocimiento de elasticsearch ;-)
Más información aquí: https://github.com/ankane/searchkick