Passei por muitos blogs e sites sobre a configuração do Elasticsearch for MongoDB para indexar coleções no MongoDB, mas nenhum deles foi direto.
Por favor, explique-me um processo passo a passo para instalar o elasticsearch, que deve incluir:
- configuração
- executar no navegador
Estou usando o Node.js com o express.js, então ajude de acordo.
mongodb
elasticsearch
bibin david
fonte
fonte
Respostas:
Esta resposta deve ser suficiente para você seguir este tutorial sobre Construindo um componente de pesquisa funcional com MongoDB, Elasticsearch e AngularJS .
Se você deseja usar a pesquisa facetada com dados de uma API, o BirdWatch Repo da Matthiasn é algo que você pode querer considerar.
Então, aqui está como você pode configurar um "cluster" Elasticsearch de nó único para indexar o MongoDB para uso em um aplicativo NodeJS, Express em uma instância nova do EC2 Ubuntu 14.04.
Verifique se está tudo atualizado.
Instale o NodeJS.
Instale o MongoDB - Essas etapas são diretamente dos documentos do MongoDB. Escolha qualquer versão com a qual você se sinta confortável. Estou aderindo à v2.4.9 porque parece ser a versão mais recente que o MongoDB-River suporta sem problemas.
Importe a chave GPG pública do MongoDB.
Atualize sua lista de fontes.
Obtenha o pacote 10gen.
Em seguida, escolha sua versão se você não quiser as mais recentes. Se você estiver configurando seu ambiente em uma máquina com Windows 7 ou 8, fique longe da v2.6 até que eles solucionem alguns erros ao executá-lo como um serviço.
Evite que a versão da sua instalação do MongoDB seja aumentada quando você atualiza.
Inicie o serviço MongoDB.
Seus arquivos de banco de dados são padrão para / var / lib / mongo e seus arquivos de log para / var / log / mongo.
Crie um banco de dados através do shell mongo e insira alguns dados fictícios nele.
Agora, para converter o MongoDB independente em um conjunto de réplicas .
Primeiro encerre o processo.
Agora, estamos executando o MongoDB como um serviço, para que não passemos a opção "--replSet rs0" no argumento da linha de comando quando reiniciarmos o processo mongod. Em vez disso, colocamos no arquivo mongod.conf.
Adicione essas linhas, substituindo os caminhos db e log.
Agora abra o shell mongo novamente para inicializar o conjunto de réplicas.
Agora instale o Elasticsearch. Estou apenas seguindo este Gist útil .
Verifique se o Java está instalado.
Continue com a v1.1.x por enquanto até que o bug do plugin Mongo-River seja corrigido na v1.2.1.
Verifique se o /etc/elasticsearch/elasticsearch.yml tem as seguintes opções de configuração ativadas se você estiver desenvolvendo apenas um único nó no momento:
Inicie o serviço Elasticsearch.
Verifique se está funcionando.
Se você vê algo assim, então você é bom.
Agora instale os plugins do Elasticsearch para que ele possa jogar com o MongoDB.
Esses dois plug-ins não são necessários, mas são bons para testar consultas e visualizar alterações em seus índices.
Reinicie o Elasticsearch.
Por fim, indexe uma coleção do MongoDB.
Verifique se o seu índice está no Elasticsearch
Verifique a integridade do seu cluster.
Provavelmente é amarelo com alguns fragmentos não atribuídos. Temos que dizer à Elasticsearch com o que queremos trabalhar.
Verifique a integridade do cluster novamente. Agora deve estar verde.
Vá jogar.
fonte
O uso do river pode apresentar problemas quando sua operação aumenta. River gastará uma tonelada de memória quando estiver em operação pesada. Eu recomendo a implementação de seus próprios modelos de pesquisa elástica, ou, se você estiver usando o mangusto, poderá criar seus modelos de pesquisa elástica diretamente ou usar o mongo-elástico, que basicamente faz isso por você.
Outra desvantagem do Mongodb River é que você ficará preso usando o mongodb 2.4.x branch e o ElasticSearch 0.90.x. Você começará a descobrir que está perdendo muitos recursos realmente bons, e o projeto mongodb river simplesmente não produz um produto utilizável rápido o suficiente para se manter estável. Dito isto, o rio Mongodb definitivamente não é algo com o qual eu entraria em produção. Colocou mais problemas do que vale a pena. Ele descartará a gravação aleatoriamente sob carga pesada, consumirá muita memória e não há configuração para limitar isso. Além disso, o river não é atualizado em tempo real, ele lê oplogs do mongodb e isso pode atrasar as atualizações por até 5 minutos na minha experiência.
Recentemente, tivemos que reescrever uma grande parte do nosso projeto, porque é uma ocorrência semanal que algo dá errado com o ElasticSearch. Chegamos ao ponto de contratar um consultor de operações de desenvolvimento, que também concorda que é melhor se afastar de River.
ATUALIZAR: O Elasticsearch-mongodb-river agora suporta ES v1.4.0 e mongodb v2.6.x. No entanto, você provavelmente ainda terá problemas de desempenho em operações pesadas de inserção / atualização, pois esse plug-in tentará ler os oplogs do mongodb para sincronizar. Se houver muitas operações desde que a trava (ou a trava é desbloqueada), você notará um uso de memória extremamente alto no servidor de pesquisa elastics. Se você planeja realizar uma grande operação, o rio não é uma boa opção. Os desenvolvedores do ElasticSearch ainda recomendam que você gerencie seus próprios índices, comunicando-se diretamente com a API deles usando a biblioteca do cliente para o seu idioma, em vez de usar o river. Este não é realmente o objetivo do rio. O Twitter-river é um ótimo exemplo de como o rio deve ser usado. É essencialmente uma ótima maneira de obter dados de fontes externas,
Considere também que o mongodb-river fica para trás na versão, pois não é mantido pela ElasticSearch Organization, é mantido por uma terceira parte. O desenvolvimento ficou parado na ramificação da v0.90 por um longo tempo após o lançamento da v1.0 e, quando uma versão da v1.0 foi lançada, ela não era estável até a elasticsearch lançar a v1.3.0. As versões do Mongodb também ficam para trás. Você pode se encontrar em uma situação difícil quando deseja mudar para uma versão posterior de cada uma, especialmente com o ElasticSearch em desenvolvimento tão pesado, com muitos recursos muito aguardados a caminho. Manter-se atualizado sobre o ElasticSearch mais recente tem sido muito importante, pois confiamos muito no aprimoramento constante de nossa funcionalidade de pesquisa como parte essencial do nosso produto.
Ao todo, você provavelmente obterá um produto melhor se o fizer. Não é tão difícil assim. É apenas mais um banco de dados para gerenciar no seu código e pode ser facilmente inserido nos modelos existentes sem grandes refatorações.
fonte
not_analyzed
, caso contrário você terá problemas para consultá-lo, assim como os campos analisados serão tokenizados.Achei o mongo-connector útil. Ele é do Mongo Labs (MongoDB Inc.) e pode ser usado agora com o Elasticsearch 2.x
Gerenciador de documentos do Elastic 2.x: https://github.com/mongodb-labs/elastic2-doc-manager
O mongo-connector cria um pipeline de um cluster MongoDB para um ou mais sistemas de destino, como Solr, Elasticsearch ou outro cluster MongoDB. Ele sincroniza os dados no MongoDB com o destino e, em seguida, segue o oplog do MongoDB, acompanhando as operações no MongoDB em tempo real. Foi testado com Python 2.6, 2.7 e 3.3+. Documentação detalhada está disponível no wiki.
https://github.com/mongodb-labs/mongo-connector https://github.com/mongodb-labs/mongo-connector/wiki/Usage%20with%20ElasticSearch
fonte
O River é uma boa solução quando você deseja ter uma sincronização quase em tempo real e uma solução geral.
Se você já possui dados no MongoDB e deseja enviá-los com muita facilidade para a Elasticsearch como "one-shot", pode experimentar meu pacote no Node.js https://github.com/itemsapi/elasticbulk .
Ele usa fluxos Node.js para que você possa importar dados de tudo o que suporta fluxos (por exemplo, arquivos MongoDB, PostgreSQL, MySQL, JSON, etc.)
Exemplo para MongoDB para Elasticsearch:
Instale pacotes:
Crie um script, por exemplo, script.js:
Envie seus dados:
Não é extremamente rápido, mas está funcionando para milhões de registros (graças aos fluxos).
fonte
Aqui como fazer isso no mongodb 3.0. Eu usei esse bom blog
Teste no navegador:
http: // localhost: 9200 / _search? q = home
fonte
Aqui encontrei outra boa opção para migrar seus dados do MongoDB para o Elasticsearch. Um daemon go que sincroniza o mongodb com a elasticsearch em tempo real. É o Monstache. Está disponível em: Monstache
Abaixo do setp inicial para configurá-lo e usá-lo.
Passo 1:
Passo 2 :
Etapa 3: verifique a replicação.
Etapa 4. Baixe o " https://github.com/rwynn/monstache/releases ". Descompacte o download e ajuste sua variável PATH para incluir o caminho para a pasta da sua plataforma.
"monstache -v"
Vá para cmd e digite # 4.13.1 O Monstache usa o formato TOML para sua configuração. Configure o arquivo para migração chamado config.tomlEtapa 5.
Meu config.toml ->
Etapa 6.
fonte
Como o mongo-connector agora parece morto, minha empresa decidiu criar uma ferramenta para usar os fluxos de mudança do Mongo para produzir no Elasticsearch.
Nossos resultados iniciais parecem promissores. Você pode conferir em https://github.com/electionsexperts/mongo-stream . Ainda estamos no início do desenvolvimento e gostaríamos de receber sugestões ou contribuições.
fonte