Esta respuesta debería ser suficiente para configurarlo para seguir este tutorial sobre cómo crear un componente de búsqueda funcional con MongoDB, Elasticsearch y AngularJS .
Si está buscando utilizar la búsqueda facetada con datos de una API, entonces el BirdWatch Repo de Matthiasn es algo que quizás desee ver.
Así es como puede configurar un "clúster" Elasticsearch de un solo nodo para indexar MongoDB para usar en una aplicación NodeJS, Express en una nueva instancia EC2 Ubuntu 14.04.
Asegúrese de que todo esté actualizado.
sudo apt-get update
Instalar NodeJS.
sudo apt-get install nodejs
sudo apt-get install npm
Instalar MongoDB : estos pasos son directamente de los documentos de MongoDB. Elija la versión con la que se sienta cómodo. Me quedo con v2.4.9 porque parece ser la versión más reciente que MongoDB-River admite sin problemas.
Importe la clave pública GPG MongoDB.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Actualiza tu lista de fuentes.
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Obtenga el paquete 10gen.
sudo apt-get install mongodb-10gen
Luego elija su versión si no desea la más reciente. Si está configurando su entorno en una máquina con Windows 7 u 8, manténgase alejado de v2.6 hasta que solucionen algunos errores al ejecutarlo como servicio.
apt-get install mongodb-10gen=2.4.9
Evite que la versión de su instalación de MongoDB se incremente cuando actualice.
echo "mongodb-10gen hold" | sudo dpkg --set-selections
Inicie el servicio MongoDB.
sudo service mongodb start
Los archivos de su base de datos están por defecto en / var / lib / mongo y sus archivos de registro en / var / log / mongo.
Cree una base de datos a través del shell mongo e inserte algunos datos ficticios en él.
mongo YOUR_DATABASE_NAME
db.createCollection(YOUR_COLLECTION_NAME)
for (var i = 1; i <= 25; i++) db.YOUR_COLLECTION_NAME.insert( { x : i } )
Ahora para convertir el MongoDB independiente en un conjunto de réplica .
Primero apaga el proceso.
mongo YOUR_DATABASE_NAME
use admin
db.shutdownServer()
Ahora estamos ejecutando MongoDB como un servicio, por lo que no pasamos la opción "--replSet rs0" en el argumento de la línea de comando cuando reiniciamos el proceso mongod. En cambio, lo ponemos en el archivo mongod.conf.
vi /etc/mongod.conf
Agregue estas líneas, sustituyendo por sus db y rutas de registro.
replSet=rs0
dbpath=YOUR_PATH_TO_DATA/DB
logpath=YOUR_PATH_TO_LOG/MONGO.LOG
Ahora abra el shell mongo nuevamente para inicializar el conjunto de réplicas.
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.
Ahora instale Elasticsearch. Solo estoy siguiendo esta útil Gist .
Asegúrese de que Java esté instalado.
sudo apt-get install openjdk-7-jre-headless -y
Quédese con v1.1.x por ahora hasta que se solucione el error del complemento Mongo-River en 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
Asegúrese de que /etc/elasticsearch/elasticsearch.yml tenga habilitadas las siguientes opciones de configuración si solo está desarrollando en un solo nodo por ahora:
cluster.name: "MY_CLUSTER_NAME"
node.local: true
Inicie el servicio Elasticsearch.
sudo service elasticsearch start
Verifica que esté funcionando.
curl http://localhost:9200
Si ves algo como esto, entonces eres bueno.
{
"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"
}
Ahora instale los complementos de Elasticsearch para que pueda jugar con MongoDB.
bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.6.0
bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.6.0
Estos dos complementos no son necesarios, pero son buenos para probar consultas y visualizar cambios en sus índices.
bin/plugin --install mobz/elasticsearch-head
bin/plugin --install lukas-vlcek/bigdesk
Reinicie Elasticsearch.
sudo service elasticsearch restart
Finalmente indexe una colección de 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"
}
}'
Verifique que su índice esté en Elasticsearch
curl -XGET http://localhost:9200/_aliases
Verifique el estado de su clúster.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Probablemente sea amarillo con algunos fragmentos no asignados. Tenemos que decirle a Elasticsearch con qué queremos trabajar.
curl -XPUT 'localhost:9200/_settings' -d '{ "index" : { "number_of_replicas" : 0 } }'
Verifique el estado del clúster nuevamente. Debería ser verde ahora.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Ir a jugar.