J'utilise Elasticsearch Bulk API pour créer ou mettre à jour des documents.
Je sais en fait s'il s'agit de créations ou de mises à jour, mais je peux simplifier mon code en les faisant tous index
, ou "upserts" au sens SQL.
Y a-t-il un inconvénient à utiliser index
(et à laisser ES le comprendre) par rapport à l'utilisation des create
et update
plus explicites?
Si vous envoyez create
, vous devez vous assurer que le document n'existe pas encore dans votre index sinon l'appel échouera, alors que l'envoi du même document avec index
réussira toujours.
Ensuite, si pour des raisons de performances, vous savez que vous allez créer un document (avec create
ou index
) et que vous ne mettrez à jour que quelques propriétés, puis en utilisant update
pourrait avoir du sens.
Sinon, si vous envoyez toujours des documents complets, j'utiliserais tout le temps index
, à la fois pour la création et la mise à jour. Chaque fois qu'il voit une action index
, ES crée le document s'il n'existe pas ou le remplace s'il existe, mais l'appel réussit toujours.
La réponse courte: non, il n'y a aucun inconvénient.
Les points de terminaison de création et de mise à jour sont des cas particuliers. Avec create, vous ne voulez rien faire si le document est déjà là. Avec la mise à jour, vous pouvez fournir moins de données si vous ne disposez pas de toutes les données du document, vous pouvez simplement ajouter quelques champs. Vous pouvez également vous assurer que le document n'est indexé que s'il est déjà là avec la mise à jour.