Цього відповіді має бути достатньо для того, щоб ви налаштувались слідувати цьому навчальному посібнику щодо створення функціонального компонента пошуку за допомогою MongoDB, Elasticsearch та AngularJS .
Якщо ви хочете використовувати гранітний пошук з даними API, то ви можете подивитися на Matthiasn's BirdWatch Repo .
Отже, ось як ви можете встановити один кластер "кластер" Elasticsearch для того, щоб індексувати MongoDB для використання в додатку NodeJS, Express на свіжому екземплярі EC2 Ubuntu 14.04.
Переконайтесь, що все актуально.
sudo apt-get update
Встановити NodeJS.
sudo apt-get install nodejs
sudo apt-get install npm
Встановити MongoDB - ці кроки прямі від документів MongoDB. Вибирайте будь-яку версію, з якою вам зручніше. Я дотримуюся версії v2.4.9, тому що, здається, це остання версія , яка підтримує MongoDB-River без проблем.
Імпортуйте відкритий ключ GPG MongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Оновіть список джерел.
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Отримайте пакет 10генів.
sudo apt-get install mongodb-10gen
Потім виберіть свою версію, якщо ви не хочете останньої. Якщо ви налаштовуєте своє оточення на машині Windows 7 або 8, тримайтеся подалі від v2.6, поки вони не виправлять деякі помилки, запускаючи його як службу.
apt-get install mongodb-10gen=2.4.9
Запобігайте розгортанню версії установки MongoDB під час оновлення.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Запустіть сервіс MongoDB.
sudo service mongodb start
Файли вашої бази даних за замовчуванням до / var / lib / mongo, а ваші файли журналу до / var / log / mongo.
Створіть базу даних через оболонку mongo і вставте в неї деякі фіктивні дані.
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
Тепер перетворіть окремий MongoDB в набір реплік .
Перше вимкнення процесу.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Тепер ми запускаємо MongoDB як службу, тому ми не переходимо в параметр "--replSet rs0" аргументу командного рядка при перезапуску процесу mongod. Замість цього ми поміщаємо його у файл mongod.conf.
vi /etc/mongod.conf
Додайте ці рядки, підряд для ваших контурів db та log.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Тепер знову відкрийте оболонку монго, щоб ініціалізувати набір реплік.
mongo DATABASE_NAME
config = { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ] }
rs.initiate(config)
rs.slaveOk() // allows read operations to run on secondary members.
Тепер встановіть Elasticsearch. Я тільки слідкую за цим корисним Гістом .
Переконайтеся, що Java встановлена.
sudo apt-get install openjdk-7-jre-headless -y
Дотримуйтесь версії v1.1.x поки поки помилка плагіна Mongo-River не виправиться в версії 1.2.
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb
sudo dpkg -i elasticsearch-1.1.1.deb
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
sudo rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch
Переконайтесь, що /etc/elasticsearch/elasticsearch.yml увімкнено такі параметри конфігурації, якщо ви зараз розробляєте лише один вузол:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Запустіть службу Elasticsearch.
sudo service elasticsearch start
Перевірте, чи працює.
curl http://localhost:9200
Якщо ви бачите щось подібне, то ви добрі.
{
"status" : 200,
"name" : "Chi Demon",
"version" : {
"number" : "1.1.2",
"build_hash" : "e511f7b28b77c4d99175905fac65bffbf4c80cf7",
"build_timestamp" : "2014-05-22T12:27:39Z",
"build_snapshot" : false,
"lucene_version" : "4.7"
},
"tagline" : "You Know, for Search"
}
Тепер встановіть плагіни Elasticsearch, щоб вони могли грати з MongoDB.
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
Ці два плагіни не потрібні, але вони хороші для тестування запитів та візуалізації змін у ваших індексах.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Перезапустіть Elasticsearch.
sudo service elasticsearch restart
Нарешті індексуйте колекцію від MongoDB.
curl -XPUT localhost:9200/_river/DATABASE_NAME/_meta -d '{
"type": "mongodb",
"mongodb": {
"servers": [
{ "host": "127.0.0.1", "port": 27017 }
],
"db": "DATABASE_NAME",
"collection": "ACTUAL_COLLECTION_NAME",
"options": { "secondary_read_preference": true },
"gridfs": false
},
"index": {
"name": "ARBITRARY INDEX NAME",
"type": "ARBITRARY TYPE NAME"
}
}'
Перевірте, чи є ваш індекс в Elasticsearch
curl -XGET http://localhost:9200/_aliases
Перевірте здоров'я кластера.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Це, мабуть, жовтий колір з деякими непризначеними осколками. Ми повинні сказати Elasticsearch, з чим ми хочемо працювати.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Ще раз перевірте стан кластеру. Зараз має бути зеленим.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Іди грай.