2012-09-22 6 views
1

Je veux passer mon projet Rails de Solr à Elastic Search (juste pour le plaisir), mais je ne suis pas sûr de la meilleure approche pour indexer les documents. À l'heure actuelle, j'utilise Resque (job d'arrière-plan) pour cette tâche, mais j'ai été à la recherche de "rivières" sur Elastic Search et elles semblent prometteuses.MongoDB rivière VS RabbitMQ rivière VS travail d'arrière-plan (resque)

Quelqu'un qui a de l'expérience sur ce sujet peut me donner quelques conseils? résultats de performance? l'évolutivité?

Merci à l'avance

P.S: Bien est juste pour le plaisir en ce moment, je pense à migrer Solr Elastic Rechercher un projet plus vaste dans la production.

Répondre

1

Il est difficile de comprendre votre situation/vos préoccupations concernant votre question. Avec elasticsearch, vous pouvez soit insérer des données, soit utiliser une rivière pour les extraire. Lorsque vous poussez les données, vous contrôlez le fonctionnement de votre chargeur, la façon dont il traite les documents, l'apparence de l'ensemble du pipeline (collecte de données> analyse de la langue> etc.> index). L'utilisation d'une rivière peut être un moyen pratique pour extraire rapidement des données dans une recherche élastique à partir d'une certaine source (CouchDB, RDBMS), ou pour extraire continuellement des données, par exemple. à partir d'un flux RabbitMQ.

Puisque vous envisagez d'utiliser elasticsearch dans le contexte d'un projet Rails, vous allez probablement essayer la gemme Tire à un moment donné. Supposons que vous utilisez un ORM compatible ActiveModel (pour les bases de données SQL ou NoSQL), l'importation est aussi facile que:

$ rake environment tire:import CLASS=MyClass 

Voir la documentation Tire et relevant Railscasts episode pour plus d'informations.

+0

Merci Karmi. Quelques questions supplémentaires: Comment Tyre synchronise-t-elle en interne la base de données Rails (dans mon cas MongoDB) avec l'index Elastic Search? Que se passerait-il si la tâche d'index échouait (c'est-à-dire que la recherche élastique est en panne)? Et juste pour vérifier, je suppose qu'une fois que vous définissez les mappages, il met à jour seulement l'index de recherche élastique est l'un des paramètres de la cartographie a changé, non? Merci d'avance, et désolé pour ces questions newbie – fertapric

+0

Voilà beaucoup de questions pour un commentaire ... (erreur .. mise à jour ci-dessous :) – karmi

+0

1. Vous choisissez comment vous voulez synchroniser - Tire fournit un module de rappel qui se synchronisent sur le modèle mises à jour/suppressions. Vous pouvez vouloir utiliser une autre stratégie, écrite par vous-même. 2. Rien ne se passe par défaut lorsque l'indexation échoue - c'est un jeu différent où vous définissez les règles. 3. Tire met à jour l'index ES en fonction de a) vos correspondances, b) de votre méthode 'to_indexed_json' – karmi

Questions connexes