@startDocuBlock post_api_index_hash @brief creates a hash index @RESTHEADER{POST /_api/index#hash, Create hash index, createIndex:hash} @RESTQUERYPARAMETERS @RESTQUERYPARAM{collection,string,required} The collection name. @RESTBODYPARAM{type,string,required,string} must be equal to *"hash"*. @RESTBODYPARAM{fields,array,required,string} an array of attribute paths. @RESTBODYPARAM{unique,boolean,required,} if *true*, then create a unique index. @RESTBODYPARAM{sparse,boolean,required,} if *true*, then create a sparse index. @RESTBODYPARAM{deduplicate,boolean,optional,boolean} if *false*, the deduplication of array values is turned off. @RESTDESCRIPTION **NOTE** Swagger examples won't work due to the anchor. Creates a hash 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. @RESTRETURNCODES @RESTRETURNCODE{200} If the index already exists, then a *HTTP 200* is returned. @RESTRETURNCODE{201} If the index does not already exist and could be created, then a *HTTP 201* is returned. @RESTRETURNCODE{400} If the collection already contains documents and you try to create a unique hash index in such a way that there are documents violating the uniqueness, then a *HTTP 400* is returned. @RESTRETURNCODE{404} If the *collection-name* is unknown, then a *HTTP 404* is returned. @EXAMPLES Creating an unique constraint @EXAMPLE_ARANGOSH_RUN{RestIndexCreateNewUniqueConstraint} var cn = "products"; db._drop(cn); db._create(cn); var url = "/_api/index?collection=" + cn; var body = { type: "hash", unique: true, fields : [ "a", "b" ] }; var response = logCurlRequest('POST', url, body); assert(response.code === 201); logJsonResponse(response); ~ db._drop(cn); @END_EXAMPLE_ARANGOSH_RUN Creating a non-unique hash index @EXAMPLE_ARANGOSH_RUN{RestIndexCreateNewHashIndex} var cn = "products"; db._drop(cn); db._create(cn); var url = "/_api/index?collection=" + cn; var body = { type: "hash", unique: false, fields: [ "a", "b" ] }; var response = logCurlRequest('POST', url, body); assert(response.code === 201); logJsonResponse(response); ~ db._drop(cn); @END_EXAMPLE_ARANGOSH_RUN Creating a sparse index @EXAMPLE_ARANGOSH_RUN{RestIndexCreateSparseHashIndex} var cn = "products"; db._drop(cn); db._create(cn); var url = "/_api/index?collection=" + cn; var body = { type: "hash", unique: false, sparse: true, fields: [ "a" ] }; var response = logCurlRequest('POST', url, body); assert(response.code === 201); logJsonResponse(response); ~ db._drop(cn); @END_EXAMPLE_ARANGOSH_RUN @endDocuBlock