2012-02-04 10 views
11

De acuerdo, he buscado en todo el mundo en Internet algún tipo de documentación sobre cómo configurar MongoDB y Elasticsearch. Parece que hay un plugin de Mongodb river en el repositorio elástico principal de github, pero no hay documentación. ¿Alguien ha conseguido estas dos hermosas tecnologías para trabajar juntas?Configurando el río MongoDB para Elasticsearch

+21

Para el tipo que editó "río" a "conductor" - que estaba destinado a ser río. –

Respuesta

17

Esta es una pregunta bastante antigua, pero solo publicaré mi respuesta en caso de que otros se pregunten la misma pregunta, especialmente con las nuevas versiones de ES que salen todo el tiempo. Me tomó un tiempo hacer que mi ES también funcionara con MongoDB.

  1. En primer lugar, supongo que tiene instalado ES y MongoDB. Asegúrese de tener habilitados los oplogs si no está utilizando conjuntos de réplicas. Consulte here sobre cómo hacerlo.

  2. El complemento del río tiene una dependencia (elasticsearch-mapper-attachments), ASEGÚRESE de instalarlo primero para evitar problemas más adelante. Este wiki tiene los comandos necesarios que necesita para instalar los complementos. Tome nota del enlace de descarga alternativo para el complemento de río si está utilizando ES 0.20.2 y superior.

  3. Reiniciar ES.

  4. Utilice el siguiente comando para habilitar la indexación:

    curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d ' 
    { 
        "type": "mongodb", 
        "mongodb": { 
         "db": "your-database-name", 
         "collection": "your-collection-name" 
        }, 
        "index": { 
         "name": "mongoindex", 
         "type": "your-type" 
        } 
    }' 
    
  5. Para hacer una búsqueda, use curl -XGET 'http://localhost:9200/mongoindex/_search?q=field:value'

llegué mayor parte de mi información de this website, pero sentí que podía ser optimizado mucho más, de ahí mi propio enfoque.

0

Funciona en ciertas configuraciones. Las versiones de elasticsearch river plugin y mongodb podrían ser esenciales para que funcione todo el sistema.

Aquí es pasos para reproducir el entorno de trabajo

1) utilizar elasticsearch versión 1.2.4. El paquete para Ubuntu se encuentra aquí: https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb

instalarlo con dpkg -i /path/to/elasticsearch-1.2.4.deb

2) instalar el plugin río y sus dependencias:

cd /usr/share/elasticsearch && bin/plugin --install elasticsearch/elasticsearch-mapper-attachments/1.9.0 
cd /usr/share/elasticsearch && bin/plugin --install com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.1 

versiones más recientes de asignador atachments plug-in están disponibles, pero wiki oficial de El plugin de mongo river sugiere usar 1.9.0.

3) MongoDB v2.4.9 seguramente funciona con el plugin elasticsearch river. asegurarse mongod se puso en marcha con --replSet rs0 o si tiene replSet=rs0 en mongod.conf A continuación, usted debe estar seguro de que conjunto de réplicas se inicia en mongodb: entrada a Mongo consola:

mongo 

A continuación, escriba:

rs.initiate() 
rs.status() 

4) Se han hecho los preparativos, ahora debe iniciar el plugin elasticsearch river. Suponiendo que elasticsearch se estén ejecutando en el servidor local: 9200 y mongodb está en 10.0.2.15:27017

curl -XPUT "localhost:9200/_river/feed/_meta" -d" 
     { 
      \"type\": \"mongodb\", 
      \"mongodb\": { 
       \"servers\": [ 
       {\"host\": \"10.0.2.15", \"port\": 27017} 
       ], 
       \"db\": \"YOUR_DB\", 
       \"collection\": \"YOUR_COLLECTION\" 
      }, 
      \"index\": { 
       \"name\": \"YOUR_ELASTIC_INDEX\", 
       \"type\": \"item\" 
      } 
     }" 

5) comprobar rs.config() en el servidor mongo. Debe contener nombres de host resolubles o ips para los miembros del conjunto de réplicas que podrían ser contactados por el plugin de mongodb river. El complemento del río Elasticsearch se conectará al host especificado en mongodb.servers y obtendrá la configuración de la réplica. A continuación, intentará conectarse al host principal de la réplica establecida por el nombre de host especificado en rs.config(). Si está a punto de usar contenedores docker para interconectar monogdb y elasticsearch a través del plugin River, eso es un problema.

Se podría actualizar rs config de la siguiente manera:

mongo 

y luego en mongo shell

cfg = rs.config() 
cfg.members[0].host = "12.34.56.78:27017" 
rs.reconfig(cfg) 
Cuestiones relacionadas