ArangoDB v3.4 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version here: Latest Docs
Working with Persistent Indexes
If a suitable persistent index exists, then /_api/simple/range
and other operations
will use this index to execute queries.
Create a persistent index
creates a persistent index
POST /_api/index
Query Parameters
- collection-name (string, required): The collection name.
Request Body
-
type (string, required): must be equal to “persistent”.
-
fields (array of strings, required): an array of attribute paths.
-
unique (boolean, required): if true, then create a unique index.
-
sparse (boolean, required): if true, then create a sparse index.
Creates a persistent index for the collection collection-name, if it does not already exist. The call expects an object containing the index details.
In a sparse index all documents will be excluded from the index that do not contain at least one of the specified index attributes (i.e. fields) or that have a value of null in any of the specified index attributes. Such documents will not be indexed, and not be taken into account for uniqueness checks if the unique flag is set.
In a non-sparse index, these documents will be indexed (for non-present indexed attributes, a value of null will be used) and will be taken into account for uniqueness checks if the unique flag is set.
Note: unique indexes on non-shard keys are not supported in a cluster.
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 documents and you try to create a unique persistent index in such a way that there are documents violating the uniqueness, then a HTTP 400 is returned.
HTTP 404: If the collection-name is unknown, then a HTTP 404 is returned.
Examples
Creating a persistent index
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/index?collection=products <<EOF
{
"type" : "persistent",
"unique" : false,
"fields" : [
"a",
"b"
]
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"deduplicate" : true,
"fields" : [
"a",
"b"
],
"id" : "products/69787",
"isNewlyCreated" : true,
"selectivityEstimate" : 1,
"sparse" : false,
"type" : "persistent",
"unique" : false,
"error" : false,
"code" : 201
}
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/index?collection=products <<EOF
{
"type" : "persistent",
"unique" : false,
"fields" : [
"a",
"b"
]
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Creating a sparse persistent index
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/index?collection=products <<EOF
{
"type" : "persistent",
"unique" : false,
"sparse" : true,
"fields" : [
"a"
]
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"deduplicate" : true,
"fields" : [
"a"
],
"id" : "products/69827",
"isNewlyCreated" : true,
"selectivityEstimate" : 1,
"sparse" : true,
"type" : "persistent",
"unique" : false,
"error" : false,
"code" : 201
}
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/index?collection=products <<EOF
{
"type" : "persistent",
"unique" : false,
"sparse" : true,
"fields" : [
"a"
]
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff