Dette svar burde være nok til at få dig sat op til at følge denne vejledning om at bygge en funktionel søgekomponent med MongoDB, Elasticsearch og AngularJS.
Hvis du ønsker at bruge facetteret søgning med data fra en API, så er Matthiasns BirdWatch Repo noget, du måske vil se på.
Så her er, hvordan du kan opsætte en enkelt node Elasticsearch "cluster" til at indeksere MongoDB til brug i en NodeJS, Express-app på en ny EC2 Ubuntu 14.04-instans.
Sørg for, at alt er opdateret.
sudo apt-get update
Installer NodeJS.
sudo apt-get install nodejs
sudo apt-get install npm
Installer MongoDB - Disse trin er direkte fra MongoDB docs.Vælg den version, du er komfortabel med. Jeg holder fast i v2.4.9, fordi det ser ud til at være den seneste version, som MongoDB-River understøtter uden problemer.
Importer MongoDB offentlige GPG-nøgle.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Opdater din kildeliste.
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Få 10gen-pakken.
sudo apt-get install mongodb-10gen
Vælg derefter din version, hvis du ikke vil have den nyeste. Hvis du sætter dit miljø op på en Windows 7- eller 8-maskine, hold dig væk fra v2.6, indtil de løser nogle fejl med at køre det som en tjeneste.
apt-get install mongodb-10gen=2.4.9
Undgå, at versionen af din MongoDB-installation stødes op, når du opdaterer.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Start MongoDB-tjenesten.
sudo service mongodb start
Dine databasefiler er som standard /var/lib/mongo og dine logfiler til /var/log/mongo.
Opret en database gennem mongo-skallen og skub nogle dummy-data ind i den.
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
Nu skal du konvertere den selvstændige MongoDB til et replikasæt.
Luk først processen.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Nu kører vi MongoDB som en tjeneste, så vi sender ikke "--replSet rs0"-indstillingen i kommandolinjeargumentet, når vi genstarter mongod-processen. I stedet lægger vi det i mongod.conf-filen.
vi /etc/mongod.conf
Tilføj disse linjer, subb efter din db og log stier.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Åbn nu mongo-skallen igen for at initialisere replikasættet.
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.
Installer nu Elasticsearch. Jeg følger bare denne nyttige oversigt.
Sørg for, at Java er installeret.
sudo apt-get install openjdk-7-jre-headless -y
Hold dig til v1.1.x indtil videre, indtil Mongo-River plugin-fejlen bliver rettet i v1.2.1.
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
Sørg for, at /etc/elasticsearch/elasticsearch.yml har følgende konfigurationsmuligheder aktiveret, hvis du kun udvikler på en enkelt node i øjeblikket:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Start Elasticsearch-tjenesten.
sudo service elasticsearch start
Bekræft, at det virker.
curl http://localhost:9200
Hvis du ser noget som dette, så er du god.
{
"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"
}
Installer nu Elasticsearch plugins, så det kan spille med MongoDB.
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
Disse to plugins er ikke nødvendige, men de er gode til at teste forespørgsler og visualisere ændringer i dine indekser.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Genstart Elasticsearch.
sudo service elasticsearch restart
Indekser endelig en samling fra 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"
}
}'
Tjek, at dit indeks er i Elasticsearch
curl -XGET http://localhost:9200/_aliases
Tjek din klyngesundhed.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Den er formentlig gul med nogle ikke-tildelte skår. Vi skal fortælle Elasticsearch, hvad vi vil arbejde med.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Tjek klyngens helbred igen. Det skulle være grønt nu.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Gå og spil.