Ruby on Rails
Elasticsearch
Recherche…
Installation et test
La première chose que vous voulez faire pour le développement local est d'installer ElasticSearch sur votre ordinateur et de le tester pour voir s'il fonctionne. Il faut que Java soit installé. L'installation est assez simple:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Alors commencez:
- Mac OS X: les
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Pour le tester, le plus simple est d' curl
. Cela peut prendre quelques secondes, alors ne paniquez pas si vous n'obtenez aucune réponse au début.
curl localhost:9200
Exemple de réponse:
{
"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"
}
Mise en place d'outils pour le développement
Lorsque vous commencez à utiliser ElasticSearch (ES), il peut être utile de disposer d'un outil graphique qui vous aide à explorer vos données. Un plugin appelé elasticsearch-head
ne fait que cela. Pour l'installer, procédez comme suit:
- Découvrez dans quel dossier ES est installé:
ls -l $(which elasticsearch)
-
cd
dans ce dossier et lance le programme d’installation du plugin:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Ouvrez
http://localhost:9200/_plugin/head/
dans votre navigateur
Si tout fonctionnait comme prévu, vous devriez voir une interface graphique agréable sur laquelle vous pouvez explorer vos données.
introduction
ElasticSearch possède une API JSON bien documentée, mais vous voudrez probablement utiliser certaines bibliothèques qui gèrent cela pour vous:
Elasticsearch
- le wrapper de bas niveau officiel pour l'API HTTPElasticsearch-rails
- l'intégration Rails officielle de haut niveau qui vous permet de connecter vos modèles Rails avec ElasticSearch à l'aide du modèle ActiveRecord ou RepositoryChewy
- Une intégration alternative non officielle de haut niveau de Rails, qui est très populaire et possède sans doute une meilleure documentation
Utilisons la première option pour tester la connexion:
gem install elasticsearch
Ensuite, lancez le terminal Ruby et essayez-le:
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 vous souhaitez configurer rapidement elasticsearch, vous pouvez utiliser le joyau de searchkick:
gem 'searchkick'
Ajoutez le moteur de recherche aux modèles que vous souhaitez rechercher.
class Product < ActiveRecord::Base searchkick end
Ajouter des données à l'index de recherche.
Product.reindex
Et pour interroger, utilisez:
products = Product.search "apples" products.each do |product| puts product.name end
Assez vite, les connaissances élastiques de recherche ne sont pas nécessaires ;-)
Plus d'informations ici: https://github.com/ankane/searchkick