- Ymox,
Bonsoir à tous !
Je bricole un peu avec ElasticSearch ces temps (par le biais de FOSElasticaBundle), et j’ai un cas que je ne n’arrive pas à traiter comme je le souhaiterais. Je m’excuse d’avance, je ne connais pas non plus vraiment le vocabulaire de l’ODM, et je n’ai que de vagues souvenirs de ma période MongoDB.
J’ai un index sur une entité Person, avec évidemment des éléments "embarqués" ("nested" en anglais) Inscription. Les deux entités sont en One(Person)ToMany(Inscription), bi-directionnelle.
Je souhaite mettre à jour mon index ElasticSearch quand une inscription est modifiée, et plus précisément quand la personne de l’objet Inscription est modifiée. Concrètement, cela implique de créer le nœud pour la personne nouvellement choisie et de l’enlever pour la "personne précédente". La première étape n’est pas un souci, c’est la seconde qui me bloque.
J’imaginais naïvement que je pouvais utiliser delete
, mais je me suis vite rendu compte que cela affectait le document complet, pas seulement le nœud… Tandis que la mise à jour ne semble pas effectuer la suppression.
Est-ce que c’est mon étape de mise à jour qui n’est pas correcte, ou il y a quelque chose d’autre qui m’a échappé ?
Merci d’avance
Edit
J’avais raisonné de manière trop terre à terre. Oui, il faut "mettre à jour" les documents où le nœud doit être supprimé. Seulement, les méthodes update*()
fournies par les objets ObjectPersister ne gèrent pas les cas où il y a des suppression, apparemment. Il m’a fallu utiliser replace*()
. Ce n’est peut-être pas la solution ultime, vu qu’on remplace tout un index, mais en tout cas ça a l’air de marcher comme je m’y attendrais.