Sto utilizzando lo Elasticsearch Bulk API per creare o aggiornare documenti.API di Elasticsearch Bulk - Indice vs Crea/Aggiorna
In realtà so se sono creati o aggiornati, ma posso semplificare il mio codice semplicemente facendoli tutti index
o "upserts" nel senso SQL.
Esiste uno svantaggio nell'uso di index
(e nel fatto che ES lo rileva) utilizzando il più esplicito create
e update
?
Si supponga di poter potenzialmente sostituire un determinato documento molte, molte volte (ad esempio, indicizzando lo stesso identico documento molte volte). Dal momento che ES non "cancella" realmente nulla, non stai aggiungendo sempre più documenti e incrementando il loro numero di versione, lasciandolo successivamente al garbage collector per ripulire le versioni precedenti? In tal caso, non si sta utilizzando l'indice o creare andando a gonfiare il tuo indice a breve termine, che potrebbe influire sulle prestazioni? E il futuro utilizzo pesante della garbage collection non influenzerà anche le prestazioni? Questa è una domanda reale che mi sto chiedendo, non retorica. Grazie – cwarny
Ma quando aggiorni un documento, non lo recupera, lo modifica e lo indicizza comunque? In Aggiornamento di un documento intero, abbiamo detto che il modo per aggiornare un documento è recuperarlo, modificarlo e quindi reindicizzare l'intero documento. Questo è vero. Tuttavia, utilizzando l'API di aggiornamento, possiamo eseguire aggiornamenti parziali come l'incremento di un contatore in una singola richiesta. Abbiamo anche detto che i documenti sono immutabili: non possono essere modificati, solo sostituiti. L'API di aggiornamento deve rispettare le stesse regole. –