2016-08-04 1 views
6

J'utilise elasticsearch dans mon projet mvc web de printemps (spring-data-elasticsearch) et de me synchroniser avec la base de données (MySQL).Meilleure façon de synchroniser Elasticsearch avec Mysql

Je suis l'indexation du document de mon application, si une nouvelle entité va ajouter en même temps des tables de db, à partir de la couche de service, je demande d'indexer ce document à elasticsearch également. Les deux tables db et elasticsearch index ont les mêmes données et pour supprimer et mettre à jour l'opération sur J'utilise le même concept, en effectuant l'opération de changement sur elasticsearch et la table db, cela fonctionne bien.

Maintenant, je veux savoir quelle sera la disadvantages de cette approche.

Ou y a-t-il un meilleur moyen de rendre notre index elasticsearch à jour à partir de db. J'ai utilisé logstash mais qu'en est-il des entités supprimées

+1

Cette réponse peut vous aider: http://stackoverflow.com/ questions/34477095/elasticsearch-replication-of-other-system-data/34477639 # 34477639 – Val

Répondre

1

L'inconvénient de l'indexation synchrone est qu'il n'y a pas de nouvelle tentative s'il y a une erreur lors de la création des données d'index.

A votre place, je vais créer un cronjob/lot (pour déclencher cela dépend de la quantité de données sont mises à jour et quelle est l'importance de la mise à jour de l'index) et ce travail aura le statut d'exécution avec les journaux

vous aurez l'idée claire de votre index et aucune donnée manquante

et pour les index, vous pouvez un mode index complet & un mode index uPDATE (vous devez ajouter une date de mise à jour sur vos tables)

stratégie d'indexation que vous avez deux phases et vous pouvez choisir TWO_PHASES: vous avez besoin un maître & esclave ==> lors de l'exécution de l'indexation sur le maître l'esclave répondra aux demandes et lorsque l'indexation est terminée, vous synchronisez DIRECT_MODE: drop index & en créer un nouveau