2016-12-23 2 views
0

J'utilise logstash pour créer un index élastique. Les étapes sont les suivantes: 1. logstash commencent 2. données sont récupérer avec un plugin entrée jdbc 3. données sont indexées avec un plug-in de sortie ElasticSearch (avec un modèle comprend un alias) 4. logstash arrêterLogstash remplace l'ancien index

Le temps , J'ai un appel d'index myindex-1 qui peut être demandé avec l'alias myindex. La deuxième fois, j'ai un appel d'index myindex-2 qui peut être demandé avec l'alias myindex. Le premier index est maintenant obsolète et je dois le supprimer juste avant (ou après l'étape 4).

Savez-vous comment faire?

Répondre

0

Pour commencer, si vous connaissez le nom de l'index dépréciée, il est juste une question d'ajouter une étape 5:

curl -XDELETE 'http://localhost:9200/myindex-1' 

Vous voulez envelopper votre logstash exécuter dans un script avec cette étape supplémentaire - À ma connaissance, il n'y a pas d'option pour que logstash supprime un index, ce n'est tout simplement pas son but. Mais à partir de la façon dont vous décrivez votre situation, il semble que vous essayez de garder les données disponibles pendant la création de l'index, pourriez-vous élaborer un peu sur votre cas d'utilisation?

Le motif de la demande est que, avec la procédure actuelle, vous risquez de vous retrouver avec des données en double (ancienne et nouvelle version) pendant la période d'indexation.

S'il est en effet nécessaire de rafraîchir les données, et en supposant que vous avez une carte d'identité dans les données extraites de la base de données, vous pourriez envisager une autre approche: la configuration 2 sorties ElasticSearch dans votre logstash, première à l'action mettre à "supprimer" ciblant l'ancienne entrée dans l'index précédent, deuxième étant votre création standard dans un nouvel index.

Selon la nature de vos données, il peut également y avoir d'autres possibilités.

+0

C'est vrai: je veux garder les données disponibles lors de la création de l'index. Votre solution, avec deux sorties, n'est pas totalement parfaite. Par exemple: la table contient deux lignes: 1 et 2. Ainsi, le premier index contient ces deux lignes. Ensuite, la ligne 1 est supprimée. La première sortie supprime uniquement la deuxième ligne, pas la première (car plus dans la BD). – 1lexis

+0

Je ne pense pas que vous trouverez une solution parfaite. Mais en ce qui concerne ma proposition, vous conserverez toujours l'ancienne suppression d'index. La «meilleure» solution dépendra de plusieurs facteurs, notamment: combien de temps faut-il pour créer le nouvel index, l'impact des doublons dans les résultats pendant la transition pour vos utilisateurs finaux, s'il y a une valeur à garder l'historique des données (auquel cas ma proposition serait vraiment mauvaise), ... – Olivier