Ruby on Rails
Elasticsearch
Поиск…
Установка и тестирование
Первое, что вы хотите сделать для локального развития, - это установить ElasticSearch на свой компьютер и протестировать его, чтобы убедиться, что он работает. Для этого требуется установка Java. Установка довольно проста:
- Mac OS X:
brew install elasticsearch
- Ubuntu:
sudo apt-get install elasticsearch
Затем запустите его:
- Mac OS X:
brew services start elasticsearch
- Ubuntu:
sudo service elasticsearch start
Для его тестирования самый простой способ - curl
. Для начала может потребоваться несколько секунд, поэтому не паникуйте, если вы сначала не получите ответа.
curl localhost:9200
Пример ответа:
{
"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"
}
Настройка инструментов для разработки
Когда вы начинаете работу с ElasticSearch (ES), может быть полезно иметь графический инструмент, который поможет вам изучить ваши данные. Плагин под названием elasticsearch-head
делает именно это. Чтобы установить его, выполните следующие действия:
- Узнайте, в какой папке ES установлена:
ls -l $(which elasticsearch)
-
cd
в эту папку и запустить двоичный файл плагина:elasticsearch/bin/plugin -install mobz/elasticsearch-head
- Откройте
http://localhost:9200/_plugin/head/
в вашем браузере.
Если бы все работало так, как ожидалось, вы должны увидеть хороший графический интерфейс, где вы сможете исследовать свои данные.
Вступление
У ElasticSearch есть хорошо документированный API JSON, но вы, вероятно, захотите использовать некоторые библиотеки, которые обрабатывают это для вас:
Elasticsearch
- официальная оболочка низкого уровня для HTTP APIElasticsearch-rails
- официальная интеграция Rails на высоком уровне, которая помогает вам подключать ваши модели Rails с помощью ElasticSearch с использованием шаблона ActiveRecord или RepositoryChewy
- альтернативная, не официальная высокоуровневая интеграция Rails, которая очень популярна и, возможно, имеет лучшую документацию
Давайте используем первый вариант для проверки соединения:
gem install elasticsearch
Затем запустите рубиновый терминал и попробуйте:
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
Если вы хотите быстро настроить elasticsearch, вы можете использовать камень поиска:
gem 'searchkick'
Добавьте поисковый запрос к моделям, которые вы хотите найти.
class Product < ActiveRecord::Base searchkick end
Добавьте данные в индекс поиска.
Product.reindex
А для запроса используйте:
products = Product.search "apples" products.each do |product| puts product.name end
Довольно быстро, знание elasticsearch не требуется ;-)
Дополнительная информация здесь: https://github.com/ankane/searchkick