Ruby on Rails
Elasticsearch
Szukaj…
Instalacja i testowanie
Pierwszą rzeczą, którą chcesz zrobić dla rozwoju lokalnego, jest zainstalowanie ElasticSearch na swoim komputerze i przetestowanie go, aby sprawdzić, czy jest uruchomiony. Wymaga zainstalowania Java. Instalacja jest dość prosta:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Następnie uruchom:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Aby go przetestować, najprościej jest z curl
. Uruchomienie może potrwać kilka sekund, więc nie panikuj, jeśli na początku nie otrzymasz żadnej odpowiedzi.
curl localhost:9200
Przykładowa odpowiedź:
{
"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"
}
Konfigurowanie narzędzi do programowania
Kiedy zaczynasz korzystać z ElasticSearch (ES), warto mieć narzędzie graficzne, które pomoże ci eksplorować dane. Właśnie to robi wtyczka o nazwie elasticsearch-head
. Aby go zainstalować, wykonaj następujące czynności:
- Dowiedz się, w którym folderze ES jest zainstalowany:
ls -l $(which elasticsearch)
-
cd
w tym folderze i uruchom plik instalacyjny wtyczki:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Otwórz
http://localhost:9200/_plugin/head/
w przeglądarce
Jeśli wszystko działało zgodnie z oczekiwaniami, powinieneś zobaczyć ładny GUI, w którym możesz eksplorować swoje dane.
Wprowadzenie
ElasticSearch ma dobrze udokumentowane API JSON, ale prawdopodobnie będziesz chciał skorzystać z niektórych bibliotek, które to obsługują:
Elasticsearch
- oficjalne opakowanie niskopoziomowe dla API HTTPElasticsearch-rails
- oficjalna integracja Railsów wysokiego poziomu, która pomaga łączyć modele Railsów z ElasticSearch przy użyciu ActiveRecord lub wzorca repozytoriumChewy
- Alternatywna, nieoficjalna integracja Railsów na wysokim poziomie, która jest bardzo popularna i zapewne ma lepszą dokumentację
Użyjmy pierwszej opcji do testowania połączenia:
gem install elasticsearch
Następnie uruchom terminal rubinowy i wypróbuj:
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
Jeśli chcesz szybko skonfigurować wyszukiwanie elastyczne, możesz użyć klejnotu searchkick:
gem 'searchkick'
Dodaj SearchKick do modeli, które chcesz wyszukać.
class Product < ActiveRecord::Base searchkick end
Dodaj dane do indeksu wyszukiwania.
Product.reindex
I do zapytania użyj:
products = Product.search "apples" products.each do |product| puts product.name end
Dość szybka, elastyczna wyszukiwarka wiedzy nie jest wymagana ;-)
Więcej informacji tutaj: https://github.com/ankane/searchkick