Working with TTL (time-to-live) indexes
Create a TTL index
POST /_api/index
Creates a time-to-live (TTL) index for the collection collection-name
if it
does not already exist. The call expects an object containing the index
details.
Query Parameters
- collection (string, required): The collection name.
Request Body
-
type (string, required): must be equal to
"ttl"
. -
name (string, optional): An easy-to-remember name for the index to look it up or refer to it in index hints. Index names are subject to the same character restrictions as collection names. If omitted, a name is auto-generated so that it is unique with respect to the collection, e.g.
idx_832910498
. -
fields (array of strings, required): an array with exactly one attribute path.
-
expireAfter (number, required): The time interval (in seconds) from the point in time stored in the
fields
attribute after which the documents count as expired. Can be set to0
to let documents expire as soon as the server time passes the point in time stored in the document attribute, or to a higher number to delay the expiration. -
inBackground (boolean, optional): You can set this option to
true
to create the index in the background, which will not write-lock the underlying collection for as long as if the index is built in the foreground. The default value isfalse
.
Responses
HTTP 200: If the index already exists, then a HTTP 200 is returned.
HTTP 201: If the index does not already exist and could be created, then a HTTP 201 is returned.
HTTP 400: If the collection already contains another TTL index, then an HTTP 400 is returned, as there can be at most one TTL index per collection.
HTTP 404: If the collection-name
is unknown, then a HTTP 404 is returned.
Examples
Creating a TTL index
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/index?collection=sessions <<EOF
{
"type" : "ttl",
"expireAfter" : 3600,
"fields" : [
"createdAt"
]
}
EOF
HTTP/1.1 201 Created
content-type: application/json
cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0
connection: Keep-Alive
content-length: 205
content-security-policy: frame-ancestors 'self'; form-action 'self';
expires: 0
pragma: no-cache
server: ArangoDB
strict-transport-security: max-age=31536000 ; includeSubDomains
x-arango-queue-time-seconds: 0.000000
x-content-type-options: nosniff