He visitado muchos blogs y sitios sobre la configuración de Elasticsearch para MongoDB para indexar Colecciones en MongoDB, pero ninguno de ellos fue sencillo.
Explíqueme un proceso paso a paso para instalar Elasticsearch, que debe incluir:
- configuración
- correr en el navegador
Estoy usando Node.js con express.js, así que por favor ayuda en consecuencia.
mongodb
elasticsearch
bibin david
fuente
fuente
Respuestas:
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.
Instalar NodeJS.
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.
Actualiza tu lista de fuentes.
Obtenga el paquete 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.
Evite que la versión de su instalación de MongoDB se incremente cuando actualice.
Inicie el servicio MongoDB.
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.
Ahora para convertir el MongoDB independiente en un conjunto de réplica .
Primero apaga el proceso.
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.
Agregue estas líneas, sustituyendo por sus db y rutas de registro.
Ahora abra el shell mongo nuevamente para inicializar el conjunto de réplicas.
Ahora instale Elasticsearch. Solo estoy siguiendo esta útil Gist .
Asegúrese de que Java esté instalado.
Quédese con v1.1.x por ahora hasta que se solucione el error del complemento Mongo-River en v1.2.1.
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:
Inicie el servicio Elasticsearch.
Verifica que esté funcionando.
Si ves algo como esto, entonces eres bueno.
Ahora instale los complementos de Elasticsearch para que pueda jugar con MongoDB.
Estos dos complementos no son necesarios, pero son buenos para probar consultas y visualizar cambios en sus índices.
Reinicie Elasticsearch.
Finalmente indexe una colección de MongoDB.
Verifique que su índice esté en Elasticsearch
Verifique el estado de su clúster.
Probablemente sea amarillo con algunos fragmentos no asignados. Tenemos que decirle a Elasticsearch con qué queremos trabajar.
Verifique el estado del clúster nuevamente. Debería ser verde ahora.
Ir a jugar.
fuente
El uso de river puede presentar problemas cuando su operación se amplía. River usará una tonelada de memoria cuando esté bajo una operación pesada. Recomiendo implementar sus propios modelos de búsqueda elástica , o si está usando mangosta puede construir sus modelos de búsqueda elástica directamente en eso o usar mongoosastic, que esencialmente lo hace por usted.
Otra desventaja de Mongodb River es que se quedará atrapado usando mongodb 2.4.x branch y ElasticSearch 0.90.x. Comenzará a descubrir que se está perdiendo muchas características realmente agradables, y el proyecto del río mongodb simplemente no produce un producto utilizable lo suficientemente rápido como para mantenerse estable. Dicho esto, el río Mongodb definitivamente no es algo con lo que entraría en producción. Se plantea más problemas de lo que vale. Caerá aleatoriamente la escritura bajo una carga pesada, consumirá mucha memoria y no hay configuración para limitar eso. Además, river no se actualiza en tiempo real, lee los registros de operaciones de mongodb, y esto puede retrasar las actualizaciones por hasta 5 minutos en mi experiencia.
Recientemente tuvimos que reescribir una gran parte de nuestro proyecto, porque es una ocurrencia semanal de que algo sale mal con ElasticSearch. Incluso habíamos ido tan lejos como para contratar a un consultor de Dev Ops, que también está de acuerdo en que es mejor alejarse de River.
ACTUALIZAR: Elasticsearch-mongodb-river ahora es compatible con ES v1.4.0 y mongodb v2.6.x. Sin embargo, es probable que aún tenga problemas de rendimiento en operaciones de inserción / actualización pesadas, ya que este complemento intentará leer los oplogs de mongodb para sincronizar. Si hay muchas operaciones desde que se desbloquea el bloqueo (o el bloqueo), notará un uso de memoria extremadamente alto en su servidor Elasticsearch. Si planea tener una operación grande, river no es una buena opción. Los desarrolladores de ElasticSearch aún recomiendan que administre sus propios índices comunicándose directamente con su API utilizando la biblioteca del cliente para su idioma, en lugar de usar river. Este no es realmente el propósito del río. Twitter-river es un gran ejemplo de cómo se debe usar river. Es esencialmente una excelente manera de obtener datos de fuentes externas,
También considere que mongodb-river se queda atrás en la versión, ya que no es mantenido por ElasticSearch Organization, es mantenido por un tercero. El desarrollo se atascó en la rama v0.90 durante mucho tiempo después del lanzamiento de la v1.0, y cuando se lanzó una versión para la v1.0, no fue estable hasta que elasticsearch lanzó la v1.3.0. Las versiones de Mongodb también se quedan atrás. Es posible que se encuentre en una situación difícil cuando busque pasar a una versión posterior de cada uno, especialmente con ElasticSearch en un desarrollo tan pesado, con muchas características muy anticipadas en camino. Mantenerse al día con el último ElasticSearch ha sido muy importante ya que confiamos en mejorar constantemente nuestra funcionalidad de búsqueda como parte central de nuestro producto.
En general, probablemente obtendrá un mejor producto si lo hace usted mismo. No es tan difícil. Es solo otra base de datos para administrar en su código, y se puede colocar fácilmente en sus modelos existentes sin una refactorización importante.
fuente
not_analyzed
, de lo contrario tendrá problemas para consultarla, de la forma en que los campos analizados se tokenizan.Encontré mongo-connector útil. Está formado por Mongo Labs (MongoDB Inc.) y se puede usar ahora con Elasticsearch 2.x
Administrador de documentos de Elastic 2.x: https://github.com/mongodb-labs/elastic2-doc-manager
mongo-connector crea una tubería desde un clúster MongoDB a uno o más sistemas de destino, como Solr, Elasticsearch u otro clúster MongoDB. Sincroniza los datos en MongoDB con el destino y luego sigue el oplog de MongoDB, manteniéndose al día con las operaciones en MongoDB en tiempo real. Ha sido probado con Python 2.6, 2.7 y 3.3+. La documentación detallada está disponible en la wiki.
https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch
fuente
River es una buena solución una vez que desee tener una sincronización casi en tiempo real y una solución general.
Si ya tiene datos en MongoDB y desea enviarlos muy fácilmente a Elasticsearch como "one-shot", puede probar mi paquete en Node.js https://github.com/itemsapi/elasticbulk .
Está utilizando transmisiones Node.js para que pueda importar datos de todo lo que admite transmisiones (es decir, archivos MongoDB, PostgreSQL, MySQL, JSON, etc.)
Ejemplo de MongoDB a Elasticsearch:
Instalar paquetes:
Crear script, es decir, script.js:
Envía tus datos:
No es extremadamente rápido, pero funciona para millones de registros (gracias a las transmisiones).
fuente
Aquí cómo hacer esto en mongodb 3.0. Usé este lindo blog
Prueba en el navegador:
http: // localhost: 9200 / _search? q = inicio
fuente
Aquí encontré otra buena opción para migrar sus datos de MongoDB a Elasticsearch. Un demonio go que sincroniza mongodb con elasticsearch en tiempo real. Es el Monstache. Está disponible en: Monstache
Debajo del setp inicial para configurarlo y usarlo.
Paso 1:
Paso 2 :
Paso 3: Verifique la replicación.
Paso 4. Descarga el " https://github.com/rwynn/monstache/releases ". Descomprima la descarga y ajuste su variable PATH para incluir la ruta a la carpeta de su plataforma. Vaya a cmd y escriba
"monstache -v"
# 4.13.1 Monstache usa el formato TOML para su configuración. Configure el archivo para la migración llamado config.tomlPaso 5
Mi config.toml ->
Paso 6
fuente
Dado que el conector mongo ahora parece muerto, mi compañía decidió crear una herramienta para usar flujos de cambio Mongo para generar Elasticsearch.
Nuestros resultados iniciales parecen prometedores. Puede consultarlo en https://github.com/electionsexperts/mongo-stream . Todavía estamos en una etapa temprana de desarrollo, y agradeceríamos sugerencias o contribuciones.
fuente