Does upserting an entity refresh its TTL in Milvus, or is delete and reinsert required?
02:22 23 Jan 2026

I’m using Milvus TTL (Time To Live) to manage the lifecycle of vector data, and I ran into a behavior that doesn’t match my expectations.

My setup works like this:

The data stored in Milvus is sourced from an external knowledge base. If a document is removed from the source, I want it to be automatically deleted from Milvus after the TTL expires. If the document still exists, I’d like to “refresh” it so that its TTL is reset and the record is kept.

To achieve this, I tried upserting the same entity (same primary key and same data) as a way to refresh the document. However, what I observed is:

  • The upsert operation succeeds;

  • But the entity is still deleted once the original TTL expires;

  • The TTL does not appear to be refreshed by the upsert.

This is confusing, because I expected an upsert to count as an update and therefore reset the TTL.

My question is:

Does upserting an existing entity refresh its TTL in Milvus? If not, what is the recommended way to refresh TTL — is delete-and-reinsert the only supported approach?

database database-design ttl vector-database milvus