NOTE: Pour effectuer des modifications à un index, assurez-vous d'avoir les privilèges de gestion sur l'index cible.
Utilisation de base
Pour modifier un type de champ, envoyez une demande de vente à l'API _mapping suivie du corps de la demande. Le corps de demande comprend le paramètre de propriétés et la cartographie du champ cible. Lors de la création d'un nouveau champ, assurez-vous d'inclure le nom du champ, le type et les paramètres de mappage.
Par exemple, la demande suivante modifie le type de champ de l'entier à long.
Put / my-index / _mappingUne fois réussi, vous devriez voir une sortie comme:
Méthode de réindexer
Dans la plupart des cas, Elasticsearch vous empêchera de mettre à jour le type de champ d'un index existant. Cela pourrait entraîner que les données actuelles deviennent invalides et provoquer des erreurs dans l'index.
Si vous souhaitez toujours mettre à jour le type d'un champ existant, vous pouvez le faire en quelques étapes simples.
L'utilisation de cette méthode vous permet de réduire le temps d'arrêt minimal pour votre index.
Créer un ancien index
Commençons par créer un index avec le type de champ incorrect.
Mettre / changer-moiDans l'exemple ci-dessus, nous avons un index simple avec les deux champs: id et nom d'utilisateur. Les types de champs sont entier et du texte, respectivement.
Supposons que le champ contient des données comme indiqué dans la requête suivante:
Post / Change-Me / _doc
Les deux requêtes ci-dessus créeront un document avec les données comme indiqué dans le corps de la demande.
Assurez-vous que les données existent:
Get / change-me / _search?joliNous devrions voir les deux enregistrements comme indiqué:
Créer un nouvel index
Disons que nous voulons changer le champ ID d'un entier en un mot-clé. Nous allons commencer par créer un nouvel index avec le type de mots clés.
Mettre / changer-me-reindexDans la demande ci-dessus, nous créons un nouvel index et définissons le type d'ID sur un mot-clé.
Réindexer les anciennes données
L'étape suivante consiste à réindexer les données de l'ancien index vers le nouveau à l'aide de l'API _ Re-index. La demande est ci-dessous:
Post / _reindexLa demande ci-dessus copiera les documents de l'ancien index vers le nouveau où le type de champ passe d'un entier à un mot-clé.
Sortie de la requête ci-dessus:
Supprimer l'ancien index
Maintenant que nous avons un index mis à jour avec le mappage correct, il est temps de supprimer l'ancien index. Nous pouvons le faire en envoyant une demande de suppression à l'index comme:
Supprimer / changer-moiLors du retrait réussi, vous devriez voir une sortie comme:
Créer un alias d'index
Si vous aviez des applications utilisant l'ancien index, ils pourraient cesser de travailler car il n'existe plus.
Nous pouvons résoudre ce problème en créant un alias pour le nouvel index avec le nom de l'ancien index.
Mettre / changer-me-reindex / _alias / changer-meLa demande ci-dessus doit créer un alias pour le nouvel index.
Conclusion
Dans ce guide, vous avez découvert comment modifier le type d'un champ existant dans un index Elasticsearch.