2017-10-19 10 views
0

Je travaille sur une application Java pour créer un index elasticSearch. L'index est actuellement construit sur une machine de développement sur une base hebdomadaire et le cluster est copié manuellement sur le cluster existant sur d'autres machines (test &). Le nouveau scénario implique toujours la reconstruction de l'index à partir de zéro chaque semaine.Créer un alias vide dans ElasticSearch

Je travaille sur une mise à jour en utilisant 5.6.3 et les bas & clients de repos de haut niveau. Après quelques investigations initiales (et en recevant un peu d'aide), je vise à faire un développement de 2 (ou 3) étapes en utilisant des alias.

Initialement, je vais alias les index existants sur dev, écrire toutes les nouvelles données dans l'alias, puis remplacer l'index par l'alias. Les autres alternatives à ce que je pouvais penser était

  1. Recréer le cluster à chaque fois que je pensais toujours un processus assez manuel, ou

  2. Recréer les index et en les déplaçant sur. Comme les index ne peuvent pas être renommés (ou du moins je crois, ce serait toujours plus compliqué car cela impliquerait de créer les index sur une machine, de les supprimer de la machine en direct et de les lire.) Actuellement, nous avons un nœud dans le cluster et donc cela implique une bonne quantité de temps d'arrêt (bien que si les alias se révèlent être une mauvaise solution, je suppose que nous pourrions ajouter un autre nœud et remplacer l'index d'un nœud à la fois).

J'ai donc opté pour

  1. En utilisant des alias, je peux commencer par recréer l'index et le copier (Phase 1), puis passer à une solution plus sophistiquée pour restaurer les données par programme & sans arrêter ElasticSearch (phase 3 est le rêve de la mise à jour juste l'index si on jamais nos données triez correctement!)

Alors jusqu'à la question. Je voudrais vraiment créer un alias vide de l'index directement. Pour autant que je puisse voir, ce n'est pas possible. Parmi d'autres pages, cette github issue., bien que d'une version plus ancienne, fait apparaître qu'un mouvement comme celui-ci serait contre-productif et n'est pas quelque chose d'élastique à introduire. Donc, je me demandais si

  1. Je cherche à la mauvaise conception entièrement ou
  2. il y a maintenant un moyen de créer un alias vide ou
  3. si je devais créer un alias, puis delete all documents de l'alias au lieu ?
+1

Je ne suis pas sûr de ce qu'un alias vide vous achètera. Vous pouvez toujours travailler avec un seul alias. L'application Live pointe vers le nom d'alias. Le processus de chargement crée un nouvel index et vous pouvez ensuite passer l'alias de l'ancien index au nouvel index. La suppression individuelle de tous les documents n'est pas une bonne idée.Au lieu de cela, vous pouvez supprimer l'index. En outre, vous pouvez explorer Elasticsearch Curator pour l'instantané/la restauration des index. – askids

+0

Ok, donc je pense que j'ai mal compris. Je pensais qu'un alias faisait partie des métadonnées d'un index et que vous ne pouviez donc pas échanger l'alias avec un autre index. Je pensais pointer l'application vers un index et créer des alias temporaires pour reconstruire l'index, puis échanger l'alias. ACTUELLEMENT l'alias peut pointer vers un index différent et il est donc plus logique de faire le contraire et de définir l'application pour regarder un alias ([appind]), puis pointez sur les index - qui changent chaque semaine - appelé appind [ddmmyyyyhhmm]. (Est-ce correct?!) – gringogordo

+1

Correct. L'application ne doit pas s'inquiéter si les données sont du 19ème ou du 20ème. Il pointera simplement vers l'alias appind. Une fois la restauration/le chargement des données terminée, vous pouvez échanger l'alias avec un seul article. Vous pouvez avoir une action de suppression et ajouter une action dans la même requête pour permuter l'alias de l'ancien index au nouvel index. – askids

Répondre

1

"Commentaire ajouté comme réponse": Correct. L'application ne doit pas s'inquiéter si les données sont du 19ème ou du 20ème. L'application peut simplement pointer vers l'alias appind. Une fois la restauration/le chargement des données terminée, vous pouvez échanger l'alias avec une requête POST unique depuis l'ancien index vers le nouvel index. Vous pouvez avoir une action de suppression et ajouter une action dans la même requête pour permuter l'alias de l'ancien index au nouvel index.