Ruby on Rails
Elasticsearch
Suche…
Installation und Prüfung
Das erste, was Sie für die lokale Entwicklung tun möchten, ist, ElasticSearch auf Ihrem Computer zu installieren und zu testen, ob es läuft. Es muss Java installiert sein. Die Installation ist ziemlich unkompliziert:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Dann starte es:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Am einfachsten geht es mit curl
. Es kann einige Sekunden dauern, bis es startet, also keine Panik, wenn Sie zuerst keine Antwort erhalten.
curl localhost:9200
Beispielantwort:
{
"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"
}
Werkzeuge für die Entwicklung einrichten
Wenn Sie mit ElasticSearch (ES) beginnen, ist es möglicherweise sinnvoll, ein grafisches Werkzeug zu haben, mit dem Sie Ihre Daten untersuchen können. Ein Plugin namens elasticsearch-head
macht genau das. Gehen Sie folgendermaßen vor, um es zu installieren:
- Finden Sie heraus, in welchem Ordner ES installiert ist:
ls -l $(which elasticsearch)
-
cd
in diesen Ordner und führen Sie das Plugin-Installations-Binärprogramm aus:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Öffnen Sie
http://localhost:9200/_plugin/head/
in Ihrem Browser
Wenn alles wie erwartet funktioniert, sollten Sie eine nette GUI sehen, auf der Sie Ihre Daten untersuchen können.
Einführung
ElasticSearch verfügt über eine gut dokumentierte JSON-API, aber Sie möchten wahrscheinlich einige Bibliotheken verwenden, die das für Sie erledigen:
Elasticsearch
- der offizielle Low-Level-Wrapper für die HTTP-APIElasticsearch-rails
- die offizielleElasticsearch-rails
Rails-Integration, mit der Sie Ihre Rails-Modelle mit ElasticSearch mithilfe des ActiveRecord- oder Repository-Musters verbinden könnenChewy
- Eine alternative, nicht offizielle High-End-Rails-Integration, die sehr beliebt ist und eine bessere Dokumentation bietet
Verwenden wir die erste Option zum Testen der Verbindung:
gem install elasticsearch
Starten Sie dann das Ruby-Terminal und probieren Sie es aus:
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'
Suchkick
Wenn Sie schnell elasticsearch einrichten möchten, können Sie den searchkick gem verwenden:
gem 'searchkick'
Fügen Sie den Modellen, nach denen Sie suchen möchten, einen Suchkick hinzu.
class Product < ActiveRecord::Base searchkick end
Fügen Sie dem Suchindex Daten hinzu.
Product.reindex
Und zur Abfrage verwenden Sie:
products = Product.search "apples" products.each do |product| puts product.name end
Ziemlich schnell, keine Elasticsearch-Kenntnisse erforderlich ;-)
Weitere Informationen finden Sie hier: https://github.com/ankane/searchkick