2017-05-15 4 views
0

Prenons le scénario suivant.ElasticSearch RollOver index - Pourquoi un alias ne peut-il pas pointer vers plusieurs index?

J'ai un alias A1 pointant vers l'index I1. Maintenant, je voudrais utiliser la fonction rollOver de ES et créer l'index I2 et faire un point d'alias à I1 et I2. Est-ce que je peux toujours continuer à rouler et faire pointer mon alias A1 sur les 2 derniers indices ou, en général, sur les 'n' derniers index?

+0

Il peut être obtenu avec de simples 'modèles d'index'. Disons que vous avez 2 alias A1 et A2 où A1 pointe vers le dernier index et d'autres points vers tous les index 'I *'. De cette façon, 'A2' pointe toujours vers plusieurs indices comme vous le pensiez. Quoi que vous vous attendiez à faire avec 'A1' (si elle pointe vers plusieurs indices), vous pouvez obtenir la même chose avec' A2' aussi. J'espère que vous comprenez cette mince distinction. Faites-nous savoir si vous pensez autrement. – avr

Répondre

1

Vous pouvez pointer un alias à plusieurs indices comme ceci:

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "indices" : ["l1", "l2"], "alias" : "A1" } } 
    ] 
} 

ou même pointer l'alias à un modèle d'index générique comme ceci:

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "index" : "l*", "alias" : "A1" } } 
    ] 
} 

EDIT: Avec capotage, vous peut seulement pointer l'alias vers un index - le dernier index. Si vous voulez un alias qui pointe vers les 2 derniers indices, n indices, ou tous les indices correspondant au modèle l*, vous devrez créer un alias supplémentaire en utilisant les requêtes que j'ai montrées ci-dessus.

EDIT 2: Si je voulais conserver 30 jours de journaux dans un index, voici comment je l'accomplirais. Je suis resté cohérent avec la dénomination des indices comme 'l1' et l'alias de 'A1'. Après les 30 premiers jours, un nouvel index sera créé appelé l000002 (la convention de nommage incrémente le numéro du dernier index et le remplissage de zéro avec une longueur de 6) et l'alias A1 pointera sur l'index l000002. Je créerais un alias second pour faire référence à 'l *' comme vous le souhaitiez initialement.

PUT /l1 
{ "aliases": { "A1": {} } } 


POST /A1/_rollover 
{ "conditions": { "max_age": "30d" } } 

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "index" : "l*", "alias" : "A2" } } 
    ] 
} 
+0

Je fais référence à ceci en cas de fonction d'index rollOver. Je sais que je peux le faire séparément. –

+0

J'ai édité ma réponse. Faites-moi savoir si cela est utile. – fylie

+0

Mais ma question était, pourquoi la fonction RollOver ne peut-elle pas le faire? Y a-t-il une raison particulière pour laquelle ES ne le fait pas? –