Update fields of one document
Changes named parts of a single document, leaving the remaining fields unchanged. The request body is a single change object formatted like an entry in POST /documents/actions/update, with the primary key supplied in the URL path: each key is a path naming a location in the document, a path with a value replaces what the path names, a path set to null empties what it names, and an omitted path leaves the existing value unchanged.
The body may repeat the primary key field as long as it matches the key specified in the path.
Unlike indexing, this endpoint describes modifications rather than desired state; requesting an update for an unindexed key returns 404 rather than creating a document. The updated document is validated as a whole.
The index has to declare a primary key and retain document source copies.
Path parameters
keystringrequirednamestringrequiredbooks@2.Body
A value of type object.
Responses
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- search:value_invalid
- The key in the path cannot be read as the type of the primary key field.
- document:key_conflicting
- The body gives the primary key field a value other than the key in the path.
- index:no_primary_key
- The index definition declares no primary key, so a document cannot be named.
- document:source_not_kept
- The index does not store document copies. Send the complete document instead.
- document:patch:path_invalid
- A path in the change could not be read.
- document:patch:no_match
- A selector names no value the document holds. A selector never creates the value it names.
- document:patch:field_unknown
- A path reaches into a field the index does not have.
- document:patch:not_an_object
- A path reaches inside a field whose values are not objects.
- document:patch:selector_required
- A path reaches into a list of objects without saying which value.
- document:patch:selector_unsupported
- A path names one value of a field that holds neither locale variants nor objects.
- document:locale_unknown
- A path names a locale the field holds no variant for.
- document:patch:add_unsupported
- The change adds a value to a field that holds a single value. Name the field on its own to replace it.
- document:patch:add_reaches_inside
- A path reaches inside a value that the same change adds, which does not exist yet. Give the whole value instead.
- document:patch:key_unsupported
- A path names one value of a list by a key that the field declares none of. Match on a field inside the value instead.
- document:patch:match_not_an_object
- A path matches on a field inside a list whose values are not objects.
- request:body_required
- The request carries no change.
- document:field_unknown
- A document gives a field the index does not have.
- document:field_inside_object
- A document gives a dotted path to a field inside an object instead of the object that holds it.
- document:field_required
- A document leaves out a field the definition marks as required.
- document:locale_unsupported
- A value carries a locale on a field that is not locale specific.
- document:object_required
- A field that holds objects is given a value that is not one.
- document:object_unsupported
- A field that does not hold objects is given one.
- document:multiple_unsupported
- A field that holds a single value is given several.
- document:multiple_per_locale_unsupported
- A field that holds a single value per locale is given several in one locale.
- document:object_key_duplicate
- Two values of an object field read the same under the key that tells them apart.
- document:number:value_invalid
- A number field is given a value that cannot be read as its type.
- document:number:value_out_of_range
- A number field is given a value outside the bounds its definition declares.
- document:geo_point:value_invalid
- A geo point field is given a value that is not a latitude and a longitude.
- document:geo_point:value_out_of_range
- A geo point field is given a point that is not on the earth.
- document:timestamp:value_invalid
- A timestamp field is given a value that is not an ISO 8601 date and time with an offset.
- document:vector:value_invalid
- A vector field is given a value that is not an array of floats.
- document:vector:value_not_finite
- A vector field is given a value that is not a finite number.
- document:vector:dimensions_mismatch
- A vector field is given a vector with other dimensions than the field declares.
- document:vector:value_zero
- A vector field compared by cosine is given a vector of only zeros.
- index:generation:unsettled
- The generation the index serves from kept changing while the write was made. Send the request again.
WWW-Authenticate: Bearer.ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- auth:unauthenticated
- The request carries no credential this node accepts.
documents.write permission.ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- auth:forbidden
- The key is accepted but does not hold the `documents.write` permission.
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- document:not_found
- Nothing is indexed under the key. Index the document whole first.
- index:not_found
- The node holds no such index, or the key has no permission on it.
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- indexer:unavailable
- No node is available to write the index. Send the request again once one is.
- index:out_of_date
- The index is synchronizing. Send the request again.
- index:readonly
- The node lost the writer role while the request ran. Send the request again to reach the new writer.
- reindex:target_busy
- An active reindex job holds the target generation. Wait for the job, or write to another generation.
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- indexer:unreachable
- The request was forwarded to the index writer and the writer did not answer. Send it again.
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- index:closed
- The request raced the index being closed to free local resources. Sending it again reopens the index.
Authorization
- Permission
- documents.write
- Checked on
- The index the path names
- Roles
writer,admin
An API key sent as a bearer token, such as Authorization: Bearer exok_4ff6b760264c1918_ePQcdT1O9HSATZoXfDbT8hhHGsP9VpZH. A key carries grants that pair permissions with index patterns; the permission each endpoint needs is named beside it. Nodes running with EXOFIND_AUTH_MODE=none accept requests without a credential, and a node with EXOFIND_AUTH_ANONYMOUS_KEY set serves requests that carry none with the permissions of that key.
Exofind is built by Level Four AB and is available under the Apache License 2.0.